home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-02-01 | 69.4 KB | 2,358 lines |
-
-
-
-
-
-
-
-
-
-
-
- __________________________________________________________________________
- __________________________________________________________________________
- __________________________________________________________________________
-
- ___________ B B S S O F T W A R E ___________
- / /\_____ _______ _____________ _____/\ \
- /__________/ / // /\/ /\ \\ \ \__________\
- \ ___ ____\/ // / / / \ \\ \/____ ___ /
- V \ \ /_____//______/ /______/ \_____\\_____\ / / V
- : \ \ \ ___\\ \ \ ___ \ / ____// ____/ / / .
- . \ \ \ \___ \ \ \ \ \ \__\ \ / /_\ / /___ / / .
- \ \ \ __\ \ \__\ \ \ ___/ / __/ \/___ / / /
- \ \ \ \____\ \ \ \ \ \ / /___\____/ / / /
- \_\/\_____\\_\/ \_\/\_\_/_____//_____/\/_/
- V V V V V V V V
- | . : . . | : .
- . . : : . .
-
- /T\empest BBS v3.40 Programmers Documentation (c) 1993-96
-
- (Revision Date: Janurary, 1996)
-
- Author: Michael Bockert
- Documentation: Michael Bockert
-
- __________________________________________________________________________
- __________________________________________________________________________
- __________________________________________________________________________
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- __________________________________________________________________________
- __________________________________________________________________________
- __________________________________________________________________________
-
- C O N T E N T S
- __________________________________________________________________________
-
- CHAPTER I - Server Information
-
- 1-1 Server Msg Port Commands
-
- __________________________________________________________________________
-
- CHAPTER II - Door Code.
-
- 2-1 Tempest "C" Door Code
- 2-2 Arexx Door Interface Code
-
- __________________________________________________________________________
-
- __________________________________________________________________________
- __________________________________________________________________________
- __________________________________________________________________________
-
-
-
-
-
-
- __________________________________________________________________________
- __________________________________________________________________________
- __________________________________________________________________________
-
- CHAPTER I - Server Information.
- __________________________________________________________________________
- __________________________________________________________________________
- __________________________________________________________________________
-
-
- struct TempMessage // New Tempest Server Structure.
- {
- struct Message Msg;
- UWORD command; // 2 bytes
- UWORD node; // 2 bytes
-
- WORD word1; // 2 byte variables.
- WORD word2;
- WORD word3;
-
- LONG long1; // 4 byte variables.
- LONG long2;
- LONG long3;
-
- ULONG ulong1; // 4 byte unsigned.
- ULONG ulong2;
- ULONG ulong3;
-
- char string[200]; // string for passing strings.
- char extra[200]; // Extra space for future variables.
- };
-
-
-
- 1-1 Server Msg Port Commands
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
- 1-1.1 Iconify Toggle (1)
- ~~~~~~~~~~~~~~~~~~~~~~~~~
- Iconifies/Un-Iconifies a node.
-
-
- 1-1.2 Shut Down Node Immediately (2)
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Shut down a node immeidately. Kicks users offline and shuts down as
- quickly as possible.
-
-
- 1-1.3 Reserved
- ~~~~~~~~~~~~~~~
- 1-1.4 Reserved
- ~~~~~~~~~~~~~~~
- 1-1.5 Reserved
- ~~~~~~~~~~~~~~~
- 1-1.6 Reserved
- ~~~~~~~~~~~~~~~
-
- 1-1.7 Kick User Offline (7)
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Kicks the current user off the bbs. If the user is in a transfer, it is
- auto aborted and the user is then kicked off.
-
-
- 1-1.8 Abort User's Transfer (8)
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Aborts user's current file transfer.
-
-
- 1-1.9 Toggle Sysop Available Flag (9)
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- This toggles the Sysop Available flag. Whether sysop is accepting sysop
- pages or not.
-
-
- 1-1.10 Set Task Priority (10)
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Change Task priority of node.
- NOTE: All nodes should be set to the same priority always.
-
- TempMsg->word1 is used to pass the value to set the priority to.
-
-
- 1-1.11 Node/Window to Front (11)
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Brings the node window to the front.
-
-
- 1-1.12 Toggle Capture Log On/Off (12)
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Turns capture on/off.
-
-
- 1-1.13 Reserve Caller By Slot Number (13)
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Send the user slot number through TempMsg->word1 and it reserves the node
- for that user.
-
-
- 1-1.14 Reserve Caller By User Handle (14)
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Send the user handle through TempMsg->string and it reserves the node
- for that user.
-
-
- 1-1.15 Reserved
- ~~~~~~~~~~~~~~~~
- 1-1.16 Reserved
- ~~~~~~~~~~~~~~~~
- 1-1.17 Reserved
- ~~~~~~~~~~~~~~~~
- 1-1.18 Reserved
- ~~~~~~~~~~~~~~~~
- 1-1.19 Reserved
- ~~~~~~~~~~~~~~~~
-
- 1-1.20 Re-Load BBS Data into node (20)
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- This will reload all data files into node to update any changes.
-
-
- 1-1.21 Toggle Temporary Sysop Access (21)
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- This toggles Temporary sysop access on/off.
-
-
- 1-1.22 Open New Shell (22)
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Opens new cli.
-
-
- 1-1.23 Busy Modem (23)
- ~~~~~~~~~~~~~~~~~~~~~~~
- Sends modem busy string, only works when no caller is online.
-
-
- 1-1.24 Reset Modem (24)
- ~~~~~~~~~~~~~~~~~~~~~~~~
- Sends modem reset string, only works when no caller is online.
-
-
- 1-1.25 Open Modem String (25)
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Sends modem open string, only works when no caller is online.
-
-
- 1-1.26 On Hook Modem String (26)
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Sends modem On Hook string, only works when no caller is online.
-
-
- 1-1.27 Hang Up Modem String (27)
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Sends modem hang up string, only works when a user IS online.
-
-
- 1-1.28 Answer Modem String (28)
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Sends modem answer string, only works when no caller is online.
-
-
-
- 1-1.30 Sysop Login (30)
- ~~~~~~~~~~~~~~~~~~~~~~~~
- Sysop Login to bbs. Only works when nobody is on the node.
-
-
- 1-1.31 Local Login (31)
- ~~~~~~~~~~~~~~~~~~~~~~~~
- Local Login as a user. Only works when nobody is on the node.
-
-
- 1-1.32 Instant Login (32)
- ~~~~~~~~~~~~~~~~~~~~~~~~~~
- Instant Login, connects user from voice to the bbs.
-
-
- 1-1.33 Chat User (33)
- ~~~~~~~~~~~~~~~~~~~~~~
- This allows you to enter chat with a user. If the node is iconified,
- then it will un-iconify and bring the window to the front and jump
- into chat with the user.
-
-
- 1-1.34 Edit Online User's Account (34)
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- This will un-iconify a node and/or bring it to the front and will pause
- the user's activity and bring up the account editor for the user's
- account.
-
-
- 1-1.35 Add Time To User Online (35)
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Adds minutes of time to user online.
- Value set with (TempMsg->word1).
-
-
- 1-1.36 Take Time From User Online (36)
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Removes minutes of time from the user online.
- Value set with (TempMsg->word1).
-
-
- 1-1.37 Execute Load Terminal Script (37)
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Tells the node to close the serial and execute the term script for that
- node.
-
-
- 1-1.50 Print Text (50)
- ~~~~~~~~~~~~~~~~~~~~~~~
- Print text contained in TempMsg->string. This text will be sent to a node
- and printed to the user.
-
-
- If you have an idea for a new one, let me know.
-
-
-
- __________________________________________________________________________
- __________________________________________________________________________
- __________________________________________________________________________
-
- CHAPTER II - Door Code
- __________________________________________________________________________
- __________________________________________________________________________
- __________________________________________________________________________
-
-
- 2.1 Tempest "C" Door Code
- ~~~~~~~~~~~~~~~~~~~~~~~~~~
- Example routines of the following commands are included in external files
- along with an example door shell.
-
-
- ** NOTE: When coding Tempest doors the User, NodeData, SystemData, and
- Today structures are passed to all doors automatically as pointers
- to the real structures in memory. This gives you direct access
- to the user online and other structures
-
- Tempest List of Door Commands:
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- DOOR START ROUTINE
- DOOR I/O ROUTINE
- DOOR COMMAND 999: Close Door
-
- DOOR COMMAND 1: pl (Print Line)
- DOOR COMMAND 2: ConPutStr
- DOOR COMMAND 3: SerPutStr
- DOOR COMMAND 4: SendChar
- DOOR COMMAND 5: ConPutChar
- DOOR COMMAND 6: SerPutChar
- DOOR COMMAND 10: CTRLC
- DOOR COMMAND 15: CheckKey
- DOOR COMMAND 16: HotKey
- DOOR COMMAND 17: Cursor Detect Hotkey
- DOOR COMMAND 20: Input String
- DOOR COMMAND 21: Input String (Ansi Bar Background)
- DOOR COMMAND 22: Line Input String
- DOOR COMMAND 23: Lint Input String (Ansi Bar Background)
- DOOR COMMAND 24: Line Input String (Hidden)
- DOOR COMMAND 25: Lint Input String (Hidden) (Ansi Bar Background)
- DOOR COMMAND 30: Get BBS Paths
- DOOR COMMAND 31: Get User Time
- DOOR COMMAND 33: Get String
- DOOR COMMAND 34: Get Value
- DOOR COMMAND 41: Alter Time
- DOOR COMMAND 43: Set Value
- DOOR COMMAND 44: Activity
- DOOR COMMAND 50: Select Transfer Protocol
- DOOR COMMAND 51: Mark/Flag file for download
- DOOR COMMAND 52: Zmodem Download
- DOOR COMMAND 53: Zmodem Upload
- DOOR COMMAND 54: Hydra Download
- DOOR COMMAND 60: Callers Log Entry
- DOOR COMMAND 61: Sysop Activity Log Entry
- DOOR COMMAND 62: DeBug Log Entry
- DOOR COMMAND 63: User Log Entry
- DOOR COMMAND 69: Write File
- DOOR COMMAND 70: Show File
- DOOR COMMAND 71: Pause
- DOOR COMMAND 72: More (Y/N/NS) Prompt
- DOOR COMMAND 73: MSG Editor
- DOOR COMMAND 74: Re-Load Data Files to Memory
- DOOR COMMAND 75: Get a Random Number
- DOOR COMMAND 76: Copy a File
- DOOR COMMAND 77: Move a File
- DOOR COMMAND 78: Get File Size
- DOOR COMMAND 79: WildCard String Compare
- DOOR COMMAND 80: Strip Color Ansi Codes
- DOOR COMMAND 81: Strip All Ansi Codes
- DOOR COMMAND 82: Find Assignment
- DOOR COMMAND 90: Post Message
- DOOR COMMAND 91: Join Conference
- DOOR COMMAND 100: Load User Account
- DOOR COMMAND 101: Save User Account
- DOOR COMMAND 103: Find User Slot Number
- DOOR COMMAND 110: Load Catalog Entry
- DOOR COMMAND 111: Save Catalog Entry
-
- _______________________________________________________________________
-
-
- DOOR START ROUTINE
- ~~~~~~~~~~~~~~~~~~
- This routine is to be your very first call in the door program. It is
- mandatory or the bbs will lock up! This routine makes sure the BBS was
- run from Tempest and not the cli. The Node Number is passed by the bbs
- so we know what port to open up.
-
- if x equal to 0, then door was run from cli and will exit.
-
-
- int DoorStart(TEXT *node)
- {
- struct MsgPort *HisPort;
- send.carrier=0;
- sprintf(st,"%s:TEMPEST_DOOR",node);
- HisPort = FindPort(st);
- if(HisPort==NULL) return (FALSE);
- sprintf(MyName,"%s:DOOR_PORT",node);
- MyPort = CreatePort(MyName,0L);
- if(MyPort==NULL)
- {
- PutStr("Can't open port");
- return(int)FALSE;
- }
- DOORIO();
- User=*&send.User;
- return (int)TRUE;
- }
- _______________________________________________________________________
-
-
- DOOR I/O ROUTINE
- ~~~~~~~~~~~~~~~~
- This command will pass data to and from the door and BBS.
- Every door is required to use this routine.
-
-
- int DOORIO(void)
- {
- struct MsgPort *HisPort;
- if(send.carrier) return(0);
- HisPort = FindPort(st);
- if(HisPort!=NULL)
- {
- send.Msg.mn_Node.ln_Type = NT_MESSAGE;
- send.Msg.mn_Length = sizeof(send);
- send.Msg.mn_ReplyPort = MyPort;
- send.carrier=0;
- PutMsg((struct MsgPort *)HisPort,(struct Message *)&send);
- Wait(1 << MyPort->mp_SigBit);
- GetMsg(MyPort);
- if(send.carrier) CloseStuff();
- return(1);
- }
- return(0);
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 999: Close Door
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- This command will close/shut down the door and return to the BBS.
- Every door is required to use this command.
-
- send.Command = 999
-
-
- void CloseStuff(void)
- {
- send.Command=999;
- DOORIO();
- while(msg=(struct MyMessage *)GetMsg(MyPort))
- ReplyMsg((struct Message *)msg);
- if(MyPort) DeletePort(MyPort);
- exit(0);
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 1: pl (Print Line)
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- This command sends a string to both the console and the serial output.
-
- send.Command= 1
- send.text1 = Pointer to the passed string
-
-
- VOID pl(TEXT *string)
- {
- send.Command=1;
- send.text1=string;
- DOORIO();
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 2: ConPutStr
- ~~~~~~~~~~~~~~~~~~~~~~~~~
- This command sends a string to the console output.
-
- send.Command= 2
- send.text1 = Pointer to the passed string
-
-
- VOID ConPutStr(TEXT *string)
- {
- send.Command=2;
- send.text1=string;
- DOORIO();
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 3: SerPutStr
- ~~~~~~~~~~~~~~~~~~~~~~~~~
- This command sends a string to the serial output.
-
- send.Command= 3
- send.text1 = Pointer to the passed string
-
-
- VOID SerPutStr(TEXT *string)
- {
- send.Command=3;
- send.text1=string;
- DOORIO();
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 4: SendChar
- ~~~~~~~~~~~~~~~~~~~~~~~~
- This command sends a single character to both the console and the serial
- output.
-
- send.Command= 4
- send.text1 = Pointer to the passed string
-
-
- VOID SendChar(TEXT *string)
- {
- send.Command=4;
- send.text1=string;
- DOORIO();
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 5: ConPutChar
- ~~~~~~~~~~~~~~~~~~~~~~~~~~
- This command sends a single character to the console output.
-
- send.Command= 5
- send.text1 = Pointer to the passed string
-
-
- VOID ConPutChar(TEXT *string)
- {
- send.Command=5;
- send.text1=string;
- DOORIO();
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 6: SerPutChar
- ~~~~~~~~~~~~~~~~~~~~~~~~~~
- This command sends a single character to the serial output.
-
- send.Command= 6
- send.text1 = Pointer to the passed string
-
-
- VOID SerPutChar(TEXT *string)
- {
- send.Command=6;
- send.text1=string;
- DOORIO();
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 7: tildepl (Print Line with Tilde Code Support)
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- This command sends a string to both the console and the serial output.
- Also detects tilde codes and interpruts them.
-
- send.Command= 7
- send.text1 = Pointer to the passed string
- (Must be large enough to handle inserted text from tilde
- codes)
-
-
- VOID tildepl(TEXT *string)
- {
- send.Command=7;
- send.text1=string;
- DOORIO();
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 10: CTRLC
- ~~~~~~~~~~~~~~~~~~~~~~
- This command checks to see if a CTRL-C Abort key was pressed.
-
- send.Command= 10
-
- returns value to send.Value1 (0=No abort key detected, 1= Yes)
-
- int CTRLC(VOID)
- {
- send.Command=10;
- DOORIO();
- return(send.Value1);
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 15: CheckKey
- ~~~~~~~~~~~~~~~~~~~~~~~~~~
- This command checks to see if a key has been pressed, and if so returns
- the key that was pressed, if no key was detected, it continues on
- without waiting.
-
- send.Command= 15
- send.Value2 = set to zero to initalize it.
-
- returns to send.Value2 the value of the key pressed.
-
- int CheckKey(VOID)
- {
- send.Command=15;
- send.Value2=0;
- DOORIO();
- return(send.Value2);
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 16: HotKey
- ~~~~~~~~~~~~~~~~~~~~~~~
- This command waits for a key to be pressed and is a hotkey, does not
- wait for the user to hit return.
-
- send.Command= 6
- send.text1 = Pointer to the passed string
-
- returns the character that was entered to the first position of the
- passed string.
-
-
- int hotkey(TEXT *character)
- {
- send.Command=16;
- send.text1=character;
- DOORIO();
- return((int)character[0]);
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 17: Cursor Detect Hotkey
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- This command is the same as the hotkey routine, except that it allows
- you to detect the cursor keys as input.
-
- send.Command= 17
-
- returns an int value, which is the number value of the character entered
- as send.Value1.
-
- If the user entered a cursor key, then the returning value will be as
- follows for cursor keys:
-
- UP ARROW = 300
- SHIFT UP ARROW = 301
- DOWN ARROW = 400
- SHIFT DOWN ARROW = 401
- LEFT ARROW = 500
- SHIFT LEFT ARROW = 501
- RIGHT ARROW = 600
- SHIFT RIGHT ARROW = 601
-
- Use those 8 values to detect cursor keys. If they enter any other key
- then it will be the normal 0-255 value of all ascii characters.
-
-
- int CursorHotKey(VOID)
- {
- send.Command=17;
- DOORIO();
- return(send.Value1);
- }
-
-
- EXAMPLE CALL ROUTINE:
- ====================
-
- int cursor
- char string[50];
-
- cursor=CursorHotKey();
- if(cursor>255)
- {
- switch(cursor)
- {
- case 300: // UP ARROW
- case 301: // SHIFT UP ARROW
- case 400: // DOWN ARROW
- case 401: // SHIFT DOWN ARROW
- case 500: // LEFT ARROW
- case 501: // SHIFT LEFT ARROW
- case 600: // RIGHT ARROW
- case 601: // SHIFT RIGHT ARROW
- }
- }
- if(cursor<256) string[0]=(char)cursor; // Normal character entered!
- string[1]=NULL;
- _______________________________________________________________________
-
-
- DOOR COMMAND 20: Input String
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- This command will allow you to enter a string of input.
-
- send.Command= 20
- send.Value1 = Length Limit of input
- send.text1 = pointer to the passed string.
-
- returns string input to send.text1
-
-
- VOID input(TEXT *mstring,int len)
- {
- send.Command=20;
- send.Value1=len;
- send.text1 =mstring;
- DOORIO();
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 21: Input String (Ansi Bar Background)
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- This command is the same as the input routine except that there is an
- ansi background showing the full limit of the string input.
-
- send.Command= 21
- send.Value1 = Length Limit of input
- send.text1 = Pointer to the passed string
-
-
- VOID inputAB(TEXT *mstring,int len)
- {
- send.Command=21;
- send.Value1=len;
- send.text1 =mstring;
- DOORIO();
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 22: Line Input String
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- This command will allow you to enter a string of input and start with a
- beginning string for editing.
-
- send.Command= 22
- send.Value1 = Length Limit of input
- send.text1 = pointer to New String passed, where the new input will end
- up.
- send.text2 = pointer to Old String passed, this string will be displayed
- has starting input.
-
- returns string input to send.text1
-
-
- VOID LineInput(TEXT *oldstring,TEXT *newstring,int len)
- {
- send.Command=22;
- send.Value1=len;
- send.text1=newstring;
- send.text2=oldstring;
- DOORIO();
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 23: Lint Input String (Ansi Bar Background)
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- This command is the same as the line input routine except that there is
- an ansi background showing the full limit of the string input.
-
- send.Command= 23
- send.Value1 = Length Limit of input
- send.text1 = pointer to New String passed, where the new input will end
- up.
- send.text2 = pointer to Old String passed, this string will be displayed
- has starting input.
-
- returns string input to send.text1
-
-
- VOID LineInputAB(TEXT *oldstring,TEXT *newstring,int len)
- {
- send.Command=23;
- send.Value1=len;
- send.text1=newstring;
- send.text2=oldstring;
- DOORIO();
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 24: Line Input String (Hidden)
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- This command will allow you to enter a string of input and start with a
- beginning string for editing but all text will be echoed to the screen
- as just periods, hiding what is really being entered.
-
- send.Command= 24
- send.Value1 = Length Limit of input
- send.text1 = pointer to New String passed, where the new input will end
- up.
- send.text2 = pointer to Old String passed, this string will be displayed
- has starting input.
-
- returns string input to send.text1
-
-
- VOID LineInputHide(TEXT *oldstring,TEXT *newstring,int len)
- {
- send.Command=24;
- send.Value1=len;
- send.text1=newstring;
- send.text2=oldstring;
- DOORIO();
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 25: Lint Input String (Hidden) (Ansi Bar Background)
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- This command is the same as the line input hidden routine except that
- there is an ansi background showing the full limit of the string input.
-
- send.Command= 25
- send.Value1 = Length Limit of input
- send.text1 = pointer to New String passed, where the new input will end
- up.
- send.text2 = pointer to Old String passed, this string will be displayed
- has starting input.
-
- returns string input to send.text1
-
-
- VOID LineInputHideAB(TEXT *oldstring,TEXT *newstring,int len)
- {
- send.Command=25;
- send.Value1=len;
- send.text1=newstring;
- send.text2=oldstring;
- DOORIO();
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 30: Get BBS Paths
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- This command will return the one of the bbs paths.
-
- send.Command= 30
- send.Value1 = Which path to return.
- send.text1 = pointer to the string passed that will store the path.
-
- [Value] : [Path Returned]
- :
- 0 : Main BBS Path.
- 1 : Path of Main Tempest files & Accounts.Data file.
- 2 : Path of Account Info directory where Applications &
- FlaggedFiles directories are stored.
- 3 : Path where Bad Archives uploaded are stored.
- 4 : Path where Catalog files (File Listings) are stored.
- 5 : Path of Describe directory.
- 6 : Path where doors are stored.
- 7 : Path where Extended Description files are stored.
- 8 : Path where all bbs logs are stored.
- 9 : Path where modules are stored.
- 10 : Path where resumealbe files are stored.
- 11 : Path of Optional Directory.
- 12 : Path of Scripts Directory.
- 13 : Path of Setup Directory.
- 14 : Path of sysop hold directory.
- 15 : Path of Text file direcotry.
- 16 : Path of Voting Booth files.
- 17 : Path of current node's upload work directory.
-
-
- returns the desired bbs path to send.text1
-
-
- VOID GetPaths(TEXT *s,int opt)
- {
- send.Command=30;
- send.Value1=opt;
- strcpy(s,"");
- send.text1=s;
- DOORIO();
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 31: Get User Time
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- This command will return the current online user's time remaining.
-
- send.Command= 31
- send.text1 = pointer to the string passed that will store the time.
-
- returns time remaining of user online into send.text1.
-
-
- VOID GetUserTime(TEXT *s)
- {
- send.Command=31;
- send.text1=s;
- DOORIO();
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 33: Get String
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~
- This command will return a string from the ~ Tilde list.
-
- send.Command= 33
- send.Value1 = which string to return.
- send.text1 = pointer to the string passed that will store the desired
- string.
-
- returns desired string into send.text1.
-
-
- VOID GetStr(TEXT *s,int opt)
- {
- send.Command=33;
- send.Value1=opt;
- strcpy(s,"");
- send.text1=s;
- DOORIO();
- }
-
- _______________________________________________________________________
-
-
- DOOR COMMAND 34: Get Value
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~
- This command will get a value of the option number you pass it.
-
- send.Command= 34
- send.Value1 = which value to return.
-
- returns value desired to send.Value2.
-
- EXAMPLE: GetValue(0) This would return the ANSI color on/off setting
-
- Available Options: 0 - If ansi color is on or off (returns 0=Off, 1=On)
-
-
-
- int GetValue(int opt)
- {
- send.Command=34;
- send.Value1=opt;
- DOORIO();
- return(send.Value2);
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 41: Alter Time
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~
- This command allows you to edit the user's time remaining.
-
- send.Command= 41
- send.Value1 = actual number to offset the current time.
-
-
- Examples Values: -10, 10, 5, -1, -5, etc.
-
-
- VOID AlterTime(int opt)
- {
- send.Command=41;
- send.Value1=opt;
- DOORIO();
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 43: Set Value
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~
- This command allows you to set certain values in the bbs.
-
- send.Command= 43
- send.Value1 = Which Option to Change.
- send.Value2 = What to change it to.
-
- EXAMPLE: SetValue(1,0) This would make the BBS have a priority of 1
-
- Available Options: 0 - BBS Priority
- 1 - Ansi ON
- 2 - Ansi OFF
-
-
- VOID SetValue(int opt1,int opt)
- {
- send.Command=43;
- send.Value2=opt1;
- send.Value1=opt;
- DOORIO();
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 44: Activity
- ~~~~~~~~~~~~~~~~~~~~~~~~~
- This command will allow you to change the user's activity field.
-
- send.Command= 44
- send.Value1 = which preset activity to set it to, or 99 to make your own,
- send.text1 = pointer to passed string, only used if you select 99 to
- create your own activity text.
-
- After exiting door, the original activity of the user is automaticly
- restored by the bbs.
-
- Current List of Preset Activity Numbers:
-
-
- 2: About to Download
- 4: About to Upload
- 6: Account Editing
- 7: Archiving Catalogs
- 8: Doors Area
- 9: Archiving Messages
- 12: Chatting Sysop
- 14: Comment to Sysop
- 16: Connecting
- 18: Downloading
- 20: E-Mail Area
- 22: File Listings
- 24: File Mail
- 26: File Maintenance
- 28: Flagging Files
- 30: Idle
- 31: Internode Msg Send
- 32: Internode Live Chat
- 33: Internode Line Chat
- 34: Joining Area
- 36: Logging Off
- 38: Logging On
- 40: New User
- 42: Paging Sysop
- 44: Reading Bulletins
- 46: Reading Messages
- 48: Viewing Text File
- 50: Remote Shell
- 52: Scanning Mail
- 54: Sysop DL
- 56: File Descriptions
- 58: Uploading
- 60: Viewing Archive
- 62: Waiting for Call
- 64: Posting a Message
- 66: Zippy Searching
- 70: Viewing Logs
-
- 99: Generic Text, You send your own text you want displayed.
- (Option 99 Works in Tempest DOOR COMMANDonly, NOT in AREXX)
-
-
- VOID Activity(BYTE act,TEXT *s)
- {
- send.Command=44;
- send.Value1=act;
- send.text1=s;
- DOORIO();
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 50: Select Protocol
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- This command allows the user to select their transfer protocol.
-
- send.Command= 50
-
- VOID SelectTransferProtocol(VOID)
- {
- send.Command=50;
- DOORIO();
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 51: Mark/Flag file for download
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- This command allows you to flag/mark a file for download.
- You can pass it a number as a string or just a filename as a string.
- This command will check the current area the user is joined to.
-
- send.Command= 51
- send.text1 = pointer to passed string that contains the filename or
- number to be flagged.
-
-
- VOID MarkFile(TEXT *flagfile)
- {
- send.Command=51;
- send.text1=flagfile);
- DOORIO();
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 52: Zmodem Download
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- This command will send the user a file with Zmodem protocol.
-
- send.Command= 52
- send.text1 = pointer to passed string that contains the file to be
- downloaded.
-
-
- VOID ZmodemDownload(TEXT *string)
- {
- send.Command=52;
- send.text1=string;
- DOORIO();
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 53: Zmodem Upload
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- This command will allow users to upload files to the bbs through a
- door using the internal zmodem protocol. You must handle the files
- yourself, they will be located in the work dir (Incomplete files) and
- work/done dir (Complete files). This has just been added to give the
- advanced programmers the option in their programs.
-
- send.Command= 53
-
-
- VOID ZmodemUpload(VOID)
- {
- send.Command=53;
- DOORIO();
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 54: Hydra Download
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- This command will send the user a file with Hydra protocol.
-
- send.Command= 54
- send.text1 = pointer to passed string that contains the file to be
- downloaded.
-
-
- VOID HydraDownload(TEXT *string)
- {
- send.Command=54;
- send.text1=string;
- DOORIO();
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 60: Callers Log Entry
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- This command will output the passed text to the callers log.
-
- send.Command= 60
- send.text1 = pointer to passed string to be wrote to log.
-
-
- VOID CLOG(TEXT *outstring)
- {
- send.Command=60;
- send.text1=outstring;
- DOORIO();
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 61: Sysop Activity Log Entry
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- This command will output the passed text to the Sysop Activity log.
-
- send.Command= 61
- send.text1 = pointer to passed string to be wrote to log.
-
-
- VOID CLOG(TEXT *outstring)
- {
- send.Command=61;
- send.text1=outstring;
- DOORIO();
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 62: DeBug Log Entry
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- This command will output the passed text to the DeBug log.
-
- send.Command= 62
- send.text1 = pointer to passed string to be wrote to log.
-
-
- VOID CLOG(TEXT *outstring)
- {
- send.Command=62;
- send.text1=outstring;
- DOORIO();
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 63: User Log Entry
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- This command will output the passed text to a user's special user log.
-
- send.Command= 63
- send.text1 = pointer to passed string to be wrote to log.
-
-
- VOID USERLOG(TEXT *outstring)
- {
- send.Command=63;
- send.text1=outstring;
- DOORIO();
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 69: Write File
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~
- This command will writes out text to a text file.
-
- send.Command= 69
- send.text1 = pointer to passed string that gives the path+filename of
- text file to be wrote to.
- send.text2 = pointer to passed string that has the text to be wrote to
- this file.
-
-
- VOID WriteFile(TEXT *ostring,TEXT *mstring)
- {
- send.Command=69;
- send.text1=ostring;
- send.text2=mstring;
- DOORIO();
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 70: Show File
- ~~~~~~~~~~~~~~~~~~~~~~~~~~
- This command will show/display a given text file.
-
- send.Command= 70
- send.text1 = pointer to string passed that has path+filename of file
- to be displayed.
-
-
- VOID showfile(TEXT *mstring)
- {
- send.Command=70;
- send.text1=mstring;
- DOORIO();
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 71: Pause
- ~~~~~~~~~~~~~~~~~~~~~~
- This command will display a Pause...(Hit A Key) type prompt that will
- wait for the user to hit a key before continuing.
-
- send.Command= 71
-
-
- int Pause(VOID)
- {
- send.Command=71;
- DOORIO();
- return(send.Value1);
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 72: More (Y/N/NS) Prompt
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
- This command will pause and ask if the user wants to continue listing,
- stop listing, or continue with non-stop display.
-
- send.Command= 72
-
- Return Values: 0 = Continue Listing
- 1 = Stop Listing
- 2 = Non Stop
-
- Return value is stored in send.Value1.
-
-
- int MORE(VOID)
- {
- send.Command=72;
- DOORIO();
- return(send.Value1);
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 73: MSG Editor
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~
- This command will call up the internal message editor and allow you to
- write out a text file with it.
-
- send.Command= 73
- send.Value1 = Max Number of lines allowed (100 MAX MAX)
- send.text1 = pointer to Path+FileName of file to be saved.
-
-
- VOID MsgEditor(TEXT *Filename,int maxlength)
- {
- send.Command=73;
- send.Value1=maxlength;
- send.text1=Filename;
- DOORIO();
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 74: Re-Load Data Files to Memory
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Re-Loads all the bbs data files into memory, to update any that have
- been changed.
-
- send.Command= 74
-
-
- VOID LoadSystemData(VOID)
- {
- send.Command=74;
- DOORIO();
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 75: Get a Random Number
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Get a random number between 0 and number passed to routine.
-
- send.Command= 75
- send.Value1 = set to passed number to set high number in range.
-
- returns generated random number into send.Value1
-
-
- int Random(int x)
- {
- send.Command=75;
- send.Value1=x;
- DOORIO();
- return(send.Value1);
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 76: Copy a File
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Move a file from source to destination.
-
- send.Command= 76
- send.text1 = Pointer to Source Path+Filename.
- send.text2 = Pointer to Destination Path+Filename.
-
-
- VOID CopyFile(TEXT *Source,TEXT *Destination)
- {
- send.Command=76;
- send.text1=Source;
- send.text2=Destination;
- DOORIO();
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 77: Move a File
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Move a file from source to destination.
-
- send.Command= 77
- send.text1 = Pointer to Source Path+Filename.
- send.text2 = Pointer to Destination Path+Filename.
-
-
- VOID MoveFile(TEXT *Source,TEXT *Destination)
- {
- send.Command=77;
- send.text1=Source;
- send.text2=Destination;
- DOORIO();
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 78: Get File Size
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Get file size of a file.
-
- send.Command= 78
- send.text1 = Pointer to Path+Filename.
-
- Returns file size of the file into send->LongValue.
-
-
- ULONG FileSize(TEXT *Source)
- {
- send.Command=78;
- send.text1=Source;
- DOORIO();
- return(send.LongValue);
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 79: WildCard String Compare
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Compares a string with a pattern to see if there is a match, supports
- '*' and '?' wild card keys.
-
- send.text1 = Pointer to string to be searched.
- send.text2 = Pointer to pattern to be searched for.
-
- Returns to send.Value1 a 0 if a match is found and 1 if there was no
- match found
-
-
- int StringCompare(TEXT *string, TEXT *pattern)
- {
- send.Command=79;
- send.text1=string;
- send.text2=pattern;
- DOORIO();
- return(send.Value1);
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 80: Strip Color Ansi Codes
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Strips only ansi color related ansi codes from a string.
-
- send.text1 = Pointer to string to be stripped of ansi codes.
-
- VOID StripColorAnsiCodes(TEXT *string)
- {
- send.Command=80;
- send.text1=string;
- DOORIO();
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 81: Strip All Ansi Codes
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Strips all ansi codes from a string.
-
- send.text1 = Pointer to string to be stripped of ansi codes.
-
- VOID StripAllAnsiCodes(TEXT *string)
- {
- send.Command=81;
- send.text1=string;
- DOORIO();
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 82: Find Assignment
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Checks an assignment to make sure it exists. Prevents requesters from
- poping up if a device/assignment does not exists.
-
- Returns 0 if device/assignment was found, or 1 if it was not valid.
-
- send.text1 = Pointer to string containing path/assignment to be checked.
-
- int FindAssignment(TEXT *string)
- {
- send.Command=82;
- send.text1=string;
- DOORIO();
- return(send.Value1);
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 90: Post Message
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Save a message in the bbs.
-
- send.Command = 90
- send.Value1 = Area
- send.text1 = Pointer to your letters structure.
- send.text2 = Pointer to msg text filename.
-
-
- VOID SaveMsg(struct Letters *Letters,int Area,TEXT *FileName)
- {
- send.Command=90;
- send.Value1=Area;
- send.text1 =(char *)Letters;
- send.text2 =FileName;
- DOORIO();
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 91: Join Conference
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Join a different area.
-
- send.Command = 91
- send.LongValue = Area to Join
-
-
- VOID JoinConference(ULONG Area)
- {
- send.Command=91;
- send.LongValue=Area;
- DOORIO();
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 100: Load User Account
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Load a user account into a user structure.
-
- send.Command = 100
- send.LongValue= Pointer to your user structure.
-
- Return value is saved in send.Value1 and returns 0 = Load Ok,
- 1= Error in load.
-
-
- int LoadUserAccount(struct User *hoozer,UWORD slot)
- {
- send.Command=100;
- send.LongValue=(ULONG)hoozer;
- send.Value1 =slot;
- DOORIO();
- return(send.Value1); // 0 = Loaded Ok, 1 = Error in load.
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 101: Save User Account
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Save a user account from a user structure.
-
- send.Command = 101
- send.LongValue= Pointer to your user structure.
-
- Return value is saved in send.Value1 and returns 0 = Saved Ok,
- 1= Error in save.
-
-
- int SaveUserAccount(struct User *hoozer,UWORD slot)
- {
- send.Command=101;
- send.LongValue=(ULONG)hoozer;
- send.Value1 =slot;
- DOORIO();
- return(send.Value1); // 0 = Saved Ok, 1 = Error in save.
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 103: Find User Slot Number
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Supply the user name and the routine will return the user slot number.
-
- send.Command= 103
- send.text1 = Pointer to user name string.
-
- Returns Slot number of user or 0 if user name was not found.
-
-
- int FindUserSlot(TEXT *name)
- {
- send.Command=103;
- send.text1 =name;
- DOORIO();
- return(send.Value1); // Returns Slot # or 0 if it is not found.
- }
- _______________________________________________________________________
-
-
- DOOR COMMAND 110: Load Catalog Entry
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Load a catalog entry into a catalogs structure.
-
- send.Command = 110
- send.text1 = Pointer to your catalogs structure.
- send.LongValue = Area
- send.Value1 = Sub File Listing (0 if upload area)
- send.Value2 = Slot to read
-
- Returns value to send.Value1, 0 = Loaded ok, 1 = Error in load.
-
-
- int LoadCatalogEntry(struct Catalogs *cat,ULONG Area,ULONG SubArea,UWORD Slot)
- {
- send.Command =110;
- send.text1 =(char *)cat;
- send.LongValue=Area;
- send.Value1 =SubArea;
- send.Value2 =Slot;
- DOORIO();
- return(send.Value1); // 0 = Loaded Ok, 1 = Error in load.
- }
- _______________________________________________________________________
-
- DOOR COMMAND 111: Save Catalog Entry
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Save a catalog entry into a catalogs structure.
-
- send.Command = 111
- send.text1 = Pointer to your catalogs structure.
- send.LongValue = Area
- send.Value1 = Sub File Listing (0 if upload area)
- send.Value2 = Slot to write
-
- Returns value to send.Value1, 0 = Saved ok, 1 = Error in save.
-
-
- int SaveCatalogEntry(struct Catalogs *cat,ULONG Area,ULONG SubArea,UWORD Slot)
- {
- send.Command =111;
- send.text1 =(char *)cat;
- send.LongValue=Area;
- send.Value1 =SubArea;
- send.Value2 =Slot;
- DOORIO();
- return(send.Value1); // 0 = Loaded Ok, 1 = Error in load.
- }
-
- __________________________________________________________________________
- __________________________________________________________________________
- __________________________________________________________________________
-
-
- 2-2 Arexx Door Interface
- ~~~~~~~~~~~~~~~~~~~~~~~~~
- ** Using AREXX with Tempest
- ~~~~~~~~~~~~~~~~~~~~~~~~
- OK, if you've written in AREXX before, AND know how to use it for
- Tempest v3.15 and newer, you can skip this section. Otherwise, you
- may want to examine this section, even if it's only for review
- purposes.
-
- This header will begin ALL AREXX programs you write for Tempest,
- and will probably need to be changed if you're converting a program
- from another BBS system.
-
- ------- cut here --------- cut here --------- cut here --------- cut here
-
- ARG BBS_NODE
- options results
- Address value 'TempRexx-'BBS_NODE
-
- ------- cut here --------- cut here --------- cut here --------- cut here
-
- Here is a line-by-line explanation of this code segment.
-
- "ARG BBS_NODE"
-
- This automatically picks up the NODE number that the user is on,
- and stores it into the variable BBS_NODE. This is REQUIRED, or else
- if two users (or the SYSOP and a user) use the program at the same
- time, they will collide, crashing one or both nodes, and of course,
- possibly GURUing!
-
- "options results"
-
- This tells the AREXX program that the BBS will be sending us data,
- and that our received data should be avaliable in the FIXED variable
- "result". (Note, that is NOT a typo! results in the options line IS
- plural, but the variable we get our answer in is NOT!). By a FIXED
- variable, I mean that you cannot change it. The BBS will put the
- answer into RESULT no matter what (If there IS an answer/reply). You
- can, of course, COPY the contents of result to another variable. for
- example: UserName = result
-
- "Address value 'TempRexx-'BBS_NODE"
-
- This line needs to be broken down to be best understood. the word
- "Address" let's AREXX know that we are going to have a fixed program
- (Tempest) to do our commuication with. "Value" indicates that it will
- be a text address, rather than a numerical one (The standard).
- 'TempRexx-' is PART of the actual address that your program will use.
- by adding the BBS_NODE after it (NO SPACES!), you turn that address
- into 'TempRexx-1' (for node 1) etc etc.. This allows us to have ONE
- program that can be used on multi-node boards, without having to have
- more than one copy of the program. Needless to say, if this line is
- omitted, the AREXX program won't know where to send/receive data, nor
- will the BBS, so both will be locked until either they both crash, or
- you reboot. Whichever one comes first!
-
- After you have the header as listed above, you are ready to continue
- on into the wonderful world of AREXX. The code varies so much beyond
- theses lines, that I won't even touch on the subject. To even attempt
- it would push this document well over the intended file size.... So,
- with this much under our belt, and a good attitude, we procede on to
- the Command Set.
-
-
- To Exit the arexx program add the following 2 lines to the end.
-
- 'exit'
- exit
-
-
-
-
- ** The Command Set
- ~~~~~~~~~~~~~~~
- - Command parameters
-
- Please note that YES, some commands are duplicated, and there are
- different formats with the same results. This is due to the
- imitation/emulation of the various BBS programs avaliable, and also
- makes it possible to use most avaliable script even in an unaltered
- state. As I get more lists of commands, there may be even more added,
- depending on the Tempest Owner's demand for it.
-
- IMPORTANT NOTE: Even though you see all these commands listed as
- uppercase letters, you are NOT required to do that. It makes it easier
- to read, but that's it. The can be all lowercase, or any mixture.
- When the BBS receives the code, it's done in a non-case-sensitive
- compare, so however you wanna do it is fine. It MUST be spelled
- correctly though! I can't compensate for that!
-
- There are three basic command types supported:
-
- 1) COMMAND
- 2) COMMAND FUNCTION
- 3) COMMAND FUNCTION PARAMETER
-
- The command type (option one) is a general command, that usually
- won't have a result returned. For example: EXIT, BufferFlush
-
- The command & function is the one that will probably be the most
- commonly used. It involves the command, and a function to be performed
- on it. An example would be: 'GetVar' '1'
-
- The command, function, and parameter will be mostly used for
- intercommunication with the BBS itself. An example would be:
- PUTVAR1 'This is User's Name'
-
- Ok, after understanding that, I'll now attempt to explain each
- command, it's function, and any parameters that might be required.
-
-
- ** Command List - Alphabetical
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
- ACTIVITY
- ~~~~~~~~
- This allows you to change the user activity that shows up in who doors
- and servers to show what the user is doing currently.
- Pass it the activity text you want displayed.
- Can also pass a number value to use one of the internal activities,
- check C Door code for complete list of internal activities.
- (19 characters max please)
-
- After quiting arexx door, the original activity of the user is
- automaticly restored by the bbs.
-
-
- ADDPOINTS
- ~~~~~~~~~
- Currently not defined, and is ignored. No result returned.
- Added for compatibility.
-
-
- ADDTIME
- ~~~~~~~
- Adds minutes to a users time online. Pass it the number of
- minutes to add.
- For opposite see 'REMOVETIME'.
-
-
- BAUD
- ~~~~
- Returns the baud rate of the current user online.
-
-
- BBSIDENTIFY
- ~~~~~~~~~~~
- This command takes one of five possible functions. The result
- returned will be determined as follows:
-
- - BBSIDENTIFY ANSI = Returns an Integer value of 0 or 1,
- which indicates if they have ANSI on or
- off.
- - BBSIDENTIFY ABBEREXX = returns the version of the BBS
- - BBSIDENTIFY BBS = returns the Tempest BBS (c) 1994 message
- - BBSIDENTIFY NAME = returns the name of the BBS.
- - BBSIDENTIFY SYSOP = returns the name of the system operator.
- - BBSIDENTIFY TERM = Returns Baud rate they are currently at,
- and a simple 8N1 Full-Duplex string.
- - BBSIDENTIFY USER = returns User's Name, Location, and
- security level, all separated by a space,
- and each item enclosed in quotes.
-
- BUFFERFLUSH
- ~~~~~~~~~~~
- Flushes any characters, commands, or garbage (line noise) from the
- buffer, so that the AREXX program can start clean. This ensures
- that accidental commands won't be entered accidentally. I recommend
- EVERY program uses this command as their first program instruction
- (After setting up the address value statement, of course!). This
- command does not use any parameters, and any given will be ignored.
- It also does not return anything to the program in Result.
-
-
- CARRIER
- ~~~~~~~
- See 'GetCarrier'; Included for compatibility.
-
-
- CHECKABORT
- ~~~~~~~~~~
- Checks to see if CTRL-C has been entered, returns '1' if it has and
- returns '0' if not.
-
-
- CHECKIO
- ~~~~~~~
- Checks to see if there is any inputed characters to be read, if there
- is it returns "TRUE" and if there is not returns "FALSE".
-
-
- CLS
- ~~~
- This command stands for CLear Screen. It merely clears the screen
- (User's and SYSOP's) and places the cursor in the upper left corner
- of the screen, usually called "HOME".
-
-
- CONTINUE
- ~~~~~~~~
- Prints the Message 'Pause...[Hit Return]:' prompt.
-
-
- DISPLAYFILE [string]
- ~~~~~~~~~~~~~~~~~~~~
- See 'SENDFILE'; Included for compatibility.
-
-
- DOWNLOAD [string]
- ~~~~~~~~~~~~~~~~~
- This command will let you download a file. You must send it the
- complete Path+filename in the given string.
-
-
- DROPCARRIER
- ~~~~~~~~~~~
- See 'KICKOFF'; Included for compatibility.
-
-
- EXIT
- ~~~~
- Tell the BBS that the arexx port does not need to be open any
- longer. The user will be returned to the BBS at this point. The
- arexx program CAN still run and do various cleanup utilities, but
- may NOT call on any more information from the BBS.
-
-
- EXITSCRIPT
- ~~~~~~~~~~
- This command is used by Xenolink BBS, and Tempest support is only
- partial at this time. Under Xenolink, this command returns control
- to the BBS, but the arexx script is still active, so when the arexx
- script executes another BBS command, the user is yanked back into
- the Arexx script again. In the Tempest emulation of this, it merely
- exits back to the BBS, leaving the arexx script still running. The
- arexx program CANNOT get BACK to the BBS however, nor can it call
- anymore BBS functions, since the connection has been broken at that
- point. This may change in the future. Currently, 'EXIT' is the
- command that should be used in place of this one.
-
-
- GETCARRIER
- ~~~~~~~~~~
- This command checks to verify that the user has not hungup on the
- BBS. If this test returns "TRUE", then the connection is ok. if it
- returns "FALSE" you will need to exit your program as quickly as
- possible, so that the BBS may reset for the next caller. results
- returned are "TRUE" for carrier present, and "FALSE" for no carrier.
-
-
- GETCHAR [string]
- ~~~~~~~~~~~~~~~~~
- This command does not require a parameter, but can accept one.
- This was to maintain compatibility with Xenolink BBS. If a paramter
- is present, it will be sent to the output. The routine then waits for
- the user to press one key, and the key pressed will be contained in
- Result. (This is also known as a HOTKEY function.) If the parameter
- is NOT present, no change will be made to the output.
-
-
- GETLINE NORMAL | HIDE | YESNO | NOYES [string]
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- This routine accepts input of up to 80 characters. The options that
- affect the procedure on this are listed below.
-
- - GETLINE NORMAL = Prints the [string] to the output, both SYSOP
- and user, and inputs a normal answer, which is
- returned in the variable result.
- - GETLINE HIDE = This lets the user input like normal except for
- what the user types is hidden from display,
- the bbs will echo periods instead of what was
- actually typed.
- - GETLINE YESNO = This prints the string, and accepts a HOTKEY
- answer of Y or N, defualting to Y if N was not
- selected. Returns the key that was pressed in
- Result.
- - GETLINE NOYES = This prints the string, and accepts a HOTKEY
- answer of Y or N, defualting to N if Y was not
- selected. Returns the key that was pressed in
- Result.
-
- GETUSER
- GETUSERVAR
- GETVAR [Number between 1 and xxx inclusive|KEYWORD]
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- These three commands ALL do the same thing, but are cloned for the
- convenience of emulating the various BBS programs. Since this
- command accepts two types of parameters, let me attempt to explain.
- To succesfully emulate Xenolink, I had to accept words, as well as
- numbers. This means that BOTH do the same thing, but since
- Xenolink's vocabulary is somewhat limited, the numbers offer more
- functions. The word equivelents can be used, but for Tempest
- programming, I recommend the numbers. The opposites of this command
- are PUTVAR, SETUSERVAR, and PUTUSER. PLEASE NOTE: Some of these
- commands are READ-ONLY, which means you can read them, but no
- function is avaliable to write it back out. This has been done for
- safety's sake. For example, you can read the name of the BBS, and
- the SYSOP's name, but it cannot be changed in the BBS.
- (The AREXX program can alter it in itself all it wants, it just
- won't be saved to the BBS....)
-
-
- - The Numerical Commands: Sequential Order
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Please note that GETUSER, GETUSERVAR, and GETVAR can be used
- interchangedly, but since GETVAR is faster to type, I'll be using
- it for my examples.
-
- These commands are the same! as the Putvar commands
-
- 0 : Alias
- 1 : Password
- 2 : Real Name
- 3 : Street Address
- 4 : City
- 5 : State
- 6 : PostalCode
- 7 : Country
-
- 8 : Voice Phone Number
- 9 : Data Phone Number
-
- 10 : BirthDate (MM-DD-YY) (GetUser Only)
- 11 : Age (GetUser Only)
- 12 : Sex (M or F)
-
- 13 : Computer Model
- 14 : Sysop Comments
-
- 15 : First Time On System
- 16 : Last Time On System
- 17 : Logon Time/Date
-
- 18 : User Slot Number
- 19 : *****[NOT USED, LATER USE] - userserialnumber
- 20 : Security Level
- 21 : *****[NOT USED, LATER USE] - securitytitle
-
- 22 : *****[NOT USED, LATER USE] \
- 23 : *****[NOT USED, LATER USE] > Net Addresses
- 24 : *****[NOT USED, LATER USE] /
-
- 25 : Total Calls
- 26 : Total Posts
- 27 : *****[NOT USED, LATER USE]
- 28 : Total Uploaded Files
- 29 : Total Uploaded Bytes
- 30 : Total Downloaded Files
- 31 : Total Downloaded Bytes
- 32 : Total Time Bank Mins Stored Up
- 33 : *****[NOT USED, LATER USE]
- 34 : *****[NOT USED, LATER USE]
- 35 : *****[NOT USED, LATER USE]
- 36 : *****[NOT USED, LATER USE]
- 37 : *****[NOT USED, LATER USE]
-
- 38 : File Ratio
- 39 : Byte Ratio
- 40 : *****[NOT USED, LATER USE]
-
- 41 : Period Limit for Calls
- 42 : Period Limit for Posts
- 43 : Period Limit for Uploaded Files
- 44 : Period Limit for Uploaded Bytes
- 45 : Period Limit for Downloaded Files
- 46 : Period Limit for Downloaded Bytes
- 47 : Period Limit for Time
- 48 : Period Limit for Time Bank
- 49 : Period Limit for Chat Time
- 50 : *****[NOT USED, LATER USE]
- 51 : *****[NOT USED, LATER USE]
- 52 : *****[NOT USED, LATER USE]
- 53 : *****[NOT USED, LATER USE]
- 54 : *****[NOT USED, LATER USE]
-
- 55 : *****[NOT USED, LATER USE] Period Type
- 56 : *****[NOT USED, LATER USE] Period Length
-
- 57 : Period Calls
- 58 : Period Posts
- 59 : Period Uploaded Files
- 60 : Period Uploaded Bytes
- 61 : Period Downloaded Files
- 62 : Period Downloaded Bytes
- 63 : *****[NOT USED, LATER USE] Period Time
- 64 : *****[NOT USED, LATER USE] Period Time Bank
- 65 : Period Chat Time
- 66 : *****[NOT USED, LATER USE]
- 67 : *****[NOT USED, LATER USE]
- 68 : *****[NOT USED, LATER USE]
- 69 : *****[NOT USED, LATER USE]
- 70 : *****[NOT USED, LATER USE]
-
- 71 : Time Left
- 72 : Chat Time Left
- 73 : File Downloads Left
- 74 : Byte Downloads Left
- 75 : *****[NOT USED, LATER USE]
- 76 : *****[NOT USED, LATER USE]
- 77 : *****[NOT USED, LATER USE]
- 78 : *****[NOT USED, LATER USE]
- 79 : *****[NOT USED, LATER USE]
- 80 : Day Credits
- 81 : File Credits
- 82 : Byte Credits
- 83 : *****[NOT USED, LATER USE]
- 84 : Personal Bytes
- 85 : Msg Base Rejoined
- 86 : File Base Rejoined
- 87 : Screen Length
- 88 : Screen Width
- 89 : Ansi Type
- 90 : Upload Protocol Selected
- 91 : Download Protocol Selected
- 92 : Selected Language
- 93 : Selected Traslation
- 94 : Time Zone Offset
- 95 : Who Preference
- 96 : File Listing View Mode
- 97 : Weed Days
- 98 : Reduce Days
- 99 : Reduce Access
- 100 : User's Password Failures
-
-
-
- GETSTR [which]
- ~~~~~~~~~~~~~~
- With this command you can get a string from the (~) Variables List
- from Chapter V. Just use the Arexx Code to get the string you
- desire.
-
-
- INPUT [characters<80]
- ~~~~~~~~~~~~~~~~~~~~~
- Accepts an input string from the user, with a maximum of 80
- characters. The user will not be allowed to type past 80
- characters, so the routine has some built in error checking. No
- string will be printed, even if passed to the routine.
- See also: PROMPT
-
-
- INPUTWAITING
- ~~~~~~~~~~~~
- Currently not defined, and is ignored. No result returned.
-
-
- KICKOFF
- ~~~~~~~
- Force a user's premature logoff. Sends the BBS the same code as
- the sysop hitting "F9", for Force Logoff. Accepts no parameters.
- returns nothing.
-
-
- LOGENTRY [string]
- ~~~~~~~~~~~~~~~~~
- This will write the string [string] to the SYSOP's callerslog file.
- the function returns nothing.
-
-
- MAYGETCHAR
- ~~~~~~~~~~
- Checks for input and if there is no input it continues immediately.
- Just like a hotkey except it don't wait around for someone to input
- a key, it only checks if something was entered and if so returns the
- key that was entered.
-
-
- MARKFILE [string]
- ~~~~~~~~~~~~~~~~~
- This command will allow you to flag/mark a file for download.
- You must pass it the file number or the file name, NO PATH!
- It will only allow you to flag files from the user's current
- file area joined.
-
-
- MENUSET
- ~~~~~~~
- Currently not defined, and is ignored. No result returned.
-
-
- MESSAGE [string]
- ~~~~~~~~~~~~~~~~
- Print a line of formatted or unformatted text, and places a carriage
- return at the end of the string. Nothing is returned.
-
-
- MORE
- ~~~~
- This command is the same as Excelsior BBS. It basically displays the
- More(Y/n/ns)? prompt. It will return one of the following values:
-
- 0 = (Yes) Continue
- 1 = (No) Stop Listing
- 2 = (NS) Non Stop Listing
- Anything less than 0 is dropped carrier.
-
-
- MSG [string]
- ~~~~~~~~~~~~
- This function performs the same as 'MESSAGE', but does NOT append a
- carriage return on the end. the cursor remains at the last
- character. This function returns nothing.
-
-
- MSGEDITOR [string]
- ~~~~~~~~~~~~~~~~~~
- This command will call up the Tempest Msg Editor.
- You must pass it the Path+Filename of the file to be created when
- the text is saved and the max number of lines for the editor.
-
- [string] field contains both the Path+filename and max number of
- for the editor.
-
- Example string: 'RAM:Message.txt 50'
-
- Notice that the path+filename is first then a space then the max
- number of lines for the message editor.
-
-
- NEWLINE
- ~~~~~~~
- This command ONLY prints a carriage return AND a linefeed. NO
- parameters are accepted, and returns nothing.
-
-
- OUTTEXT [string]
- ~~~~~~~~~~~~~~~~
- See 'MSG'; Included for compatibility.
-
-
- PATH [Value]
- ~~~~~~~~~~~~
- Returns the desired path to a certain bbs directory.
-
- [Value] : [Path Returned]
- :
- 0 : Main BBS Path.
- 1 : Path of Main Tempest files & Accounts.Data file.
- 2 : Path of Account Info directory where Applications &
- FlaggedFiles directories are stored.
- 3 : Path where Bad Archives uploaded are stored.
- 4 : Path where Catalog files (File Listings) are stored.
- 5 : Path of Describe directory.
- 6 : Path where doors are stored.
- 7 : Path where Extended Description files are stored.
- 8 : Path where all bbs logs are stored.
- 9 : Path where modules are stored.
- 10 : Path where resumealbe files are stored.
- 11 : Path of Optional Directory.
- 12 : Path of Scripts Directory.
- 13 : Path of Setup Directory.
- 14 : Path of sysop hold directory.
- 15 : Path of Text file direcotry.
- 16 : Path of Voting Booth files.
- 17 : Path of current node's upload work directory.
-
-
- PRINT [string]
- ~~~~~~~~~~~~~~
- See 'MESSAGE'; Included for compatibility.
-
-
- PROMPT [string]
- ~~~~~~~~~~~~~~~
- This performs much as the INPUT command, but also prints a string
- to the output first. Example:
- PROMPT "Do you want me to delete your Hard Drive? [YES/NO] "
- It will then wait until the user enters a response (up to 80
- characters) and then return the answer in result. Obviously this is
- a bad example, but you get the idea.
-
-
- PUTUSER
- PUTVAR
- SETUSERVAR [Number between 1 and 62 inclusive|KEYWORD] [VALUE]
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- These three commands ALL do the same thing, but are cloned for the
- convenience of emulating the various BBS programs. Since this
- command accepts two types of parameters, let me attempt to explain.
- To succesfully emulate Xenolink, I had to accept words, as well as
- numbers. This means that BOTH do the same thing, but since
- Xenolink's vocabulary is somewhat limited, the numbers offer more
- functions. The word equivelents can be used, but for Tempest
- programming, I recommend the numbers. The opposites of this command
- are GETVAR, GETUSERVAR, and GETUSER. PLEASE NOTE: Some of these
- commands are READ-ONLY, which means you can read them, but no
- function is avaliable to write it back out. This has been done for
- safety's sake. For example, you can read the name of the BBS, and
- the SYSOP's name, but it cannot be changed in the BBS.
- (The AREXX program can alter it in itself all it wants, it just
- won't be saved to the BBS....)
-
- PLEASE NOTE: ALL of these commands return a value to result. The
- command returned will be noted after the description of the command.
-
- Please be patient here, as there are approximately 80 variations
- of this command!
-
- - The Numerical commands: Sequential Order
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Please note that PUTUSER, SETUSERVAR, and PUTVAR can be used
- interchangedly, but since PUTVAR is faster to type, I'll be using it
- for my examples. OK? If not, type it yerself.
-
- [SEE GETVAR COMMAND LIST, IT IS THE SAME!
-
-
- QUERY [string]
- ~~~~~~~~~~~~~~
- See 'INPUT'; Included for compatibility.
-
-
- REMOVETIME
- ~~~~~~~~~~
- Subtracts minutes from a users time online. Pass it the number of
- minutes to subtract.
- For opposite see 'ADDTIME'.
-
-
- SCREENOUT [string]
- ~~~~~~~~~~~~~~~~~~~
- Outputs text to the screen only, does not send to the serial.
-
-
- SENDFILE [path:Filename]
- ~~~~~~~~~~~~~~~~~~~~~~~~
- Print a file from disk to the screen. Great for viewing ANSI files
- on the BBS, since it ignores what Tempest's "R"ead command considers
- "binary" code. Also useful for showing scripts, startup-sequences,
- etc to other sysops, or perhaps even program code.
-
-
- SENDSTRING [string]
- ~~~~~~~~~~~~~~~~~~~~
- Prints the formatted or unformatted [string]. NO carriage return
- OR linefeed is added. Useful for data positioning. Same as MSG
- and OUTTEXT.
-
-
- SETNODESTATUS
- ~~~~~~~~~~~~~
- Currently not defined, and is ignored. No result returned.
-
-
- SETUSERVAR [parameter to alter] [altering value]
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- This is a clone of PUTUSER and PUTVAR. See those for function and
- paramter settings.
-
-
- SHUTDOWN
- ~~~~~~~~
- Does nothing, added for compatibility.
-
-
- SYSOPLOG
- ~~~~~~~~
- See 'LOGENTRY'; Included for compatibility.
-
-
- TIMEONLINE
- ~~~~~~~~~~
- See 'TIMEREMAINING'; Included for compatibility.
-
-
- TIMEREMAINING
- ~~~~~~~~~~~~~
- Returns the time left online in minutes the user has left.
-
-
- TRANSMIT
- ~~~~~~~~
- See 'MESSAGE'; Included for compatibility.
-
-
- UPLOAD
- ~~~~~~
- This command will let a user upload with internal zmodem. You must
- handle the files yourself, they will be located in the
- work dir (Incomplete files) and work/done dir (Complete files).
- This has just been added to give the advanced programmers the
- option in their programs.
-
-
- VERSION
- ~~~~~~~
- Returns the version and date release of the BBS Software; Included
- for compatibility routines.
-
- __________________________________________________________________________
- __________________________________________________________________________
- __________________________________________________________________________
-