OPT MODULE
OPT EXPORT

/* FAME Door Commands 
 *
 * $VER:FAMEDoorCommands.h v0.23
 *
 * Used tab size: 2
 */

-> #ifndef FAME_FAMEDOORCOMMANDS_H
-> #define FAME_FAMEDOORCOMMANDS_H

/*
                                GENERAL INFO's
                                --------------

-General use of Commands:
 A Door normaly has to give values (numbers like confnumbers/usernumbers/
 flags etc..) into Data1 of the struct FAMEDoorMsg to the DoorPort.
 If more values are needed the next Data will be used: Data2 and then
 Data3. Values requested from a Door normaly can be found in Data2.
 Only if a value needs a ULONG Data3 must be used.

-The Door have to check the ReturnCode of struct FAMEDoorMsg!!!
 See FAMEGlobalBBSStructs.h for defination of the ReturnCode.

*/


/* FIM FAME Interface Module */


/* FAME DOORCOMMANDS */

/*
 kEYwORD | mEANS | dESCRIPTION
-----------------------------------
		UNUSED  <->  Not used yet!
				MC  <->  Must Command! Every Door must call this Command once!
        NR  <->  Normal Command! Most String operations (Retrieve/Send datas)
        NC  <->  Normal Command! Most String operations (Change datas)
				CF  <->  Call function! BBS Functions like Editor,Comp.Modem.NumLine
				SR  <->  System Commands! (Retrieve/Send datas)
				SC  <->  System Commands! (Change datas)
				AR  <->  Additional Command! (Retrieve/Send datas)
				AC  <->  Additional Command! (Change datas)
				RD  <->  Reserved! Do not us it !!!!!!!!!

define arrays:

MC      1 -     9

NR     10 -   199
NC    200 -   399
CF    400 -   599
SR    600 -   699
SC    700 -   799
AR    800 -   899
AC    900 -   999
RD - 1000 -  9999       - means not secret but reserved.
RD +10000 - 99999       + means secret and can't be used on the normal way.

*/


/*   --------------- Description of special symboles: ---------------------


     <- means you have to or can set this variable.

     -> means this variable has something for you! U'r request and more.


*/


/*   ##################### COMMAND DEFINES BEGIN ##########################
 */

/*   ------------------------- NR commands --------------------------------
 */

CONST MC_DOORSTART=1
/* Register a new Door, counter increases
 *
 * U HAVE TO START THIS FIRST!!!
 */

CONST MC_SHUTDOWN=2
/* Tells the node that the door is shutting down, counter decreases
 *
 * U HAVE TO USE THIS ON ENDING A DOOR! ALSO ON ENDING BECAUSE OF AN ERROR!
 *
 * U ALSO CAN USE ALTERNATIVE MC_ShutDownLastWords!
 */

CONST MC_SHUTDOWNLASTWORDS=3
/* Tells the node that the door is shutting down also write some last words,
 * counter decreases
 *
 * Data1
 * Data2
 * Data3
 * IOString <- The string to be send to the user.
 *
 * U HAVE TO USE THIS ON ENDING A DOOR! ALSO ON ENDING BECAUSE OF AN ERROR!
 *
 * U ALSO CAN USE ALTERNATIVE MC_ShutDown!
 */

CONST NR_SENDSTR=10
/* Sends a String to the User
 *
 * Data1
 * Data2
 * Data3
 * IOString <- The string to be send to the user.
 */

CONST NR_SENDSTRCRLF=11
/* Sends a String to the User with CR/LF
 *
 * Data1
 * Data2
 * Data3
 * IOString <- The string to be send to the user.
 */

CONST NR_SENDSTRCON=12
/* Sends a String to the Console only
 *
 * Data1
 * Data2
 * Data3
 * IOString <- The string to be send to the console.
 */

CONST NR_SENDSTRSER=13
/* Sends a String to the Serial only
 *
 * Data1
 * Data2
 * Data3
 * IOString <- The string to be send to the serial.
 */

CONST NR_PROMPTCHARS=14
/* Prompt the user for a specified number of chars
 *
 * Data1    <- Max. chars can be typed.
 * Data2    <- Flag for different modes.
 * Data3    -> Returncode from internal procedure (usable for Data2 flag 3).
 * IOString <- String will be used in prompt.
 * IOString -> Filled string with chars typed by the user.
 *
 * Data2 flag description:
 *
 * 0 Simple stringingput without edit and other features.
 * 1 Stringingput for chatmode. (uses wordwrapping. Do not use this to get a
 *   complete string, because after a wordwrap the string changes).
 * 2 Stringingput for MsgEditor. (U can't use this flag! It can causes damage
 *   because it uses a list. Flag denied.
 * 3 Stringingput for bulletinviewer. (It returns cursorkeys left and right
 *   up and down for the bullview to switch -(x)-BullHelp.txt texts.
 *   Data3 contains: Up: 65 Down: 66 Rigth: 67 Left: 68.
 * 4 The same as 0, but all chars will be displayed as *. Like: ****** ,
 *   but they musn't be displayed as * on console! If the flag "Display
 *   Levels to SysOp" is set the chars will be displayed as real chars
 *   on console.
 * 5 Unused.
 * 6 A real feature! This is the best flag u can use! U let the user totaly
 *   edit his string. The user can walk into the string, delete chars with
 *   delete and backspace and the user can insert at every position new chars.
 *
 * Higher flags are reserved and can't be used.
 * Normaly u can only use flag 0 and 6 !!!
 *
 */

CONST NR_HOTKEY=15
/* Gets a char without waiting for it
 *
 * Data1
 * Data2    -> The char typed by the user.
 * Data3
 * IOString
 *
 * Note: This command checks for a available char. If there is a char
 *       available you will get it immediatly, else you will get 0 in
 *       Data2.
 *
 * Note: NR_HotKey is the same as AR_GetKey, but on AR_GetKey you wont
 *       get the char, only a notify that a char was pressed.
 *       Here on NR_HotKey you will get this pressed key.
 */

CONST NR_BBSNAME=16
/* Retrieve the BBS Name
 *
 * Data1
 * Data2
 * Data3
 * IOString -> The BBS Name.
 */

CONST NR_SYSOP=17
/* Retrieve the Sysop Name
 *
 * Data1
 * Data2
 * Data3
 * IOString -> The SysOp Name.
 */

CONST NR_SETFLAGFILE=18
/* Add Files to the Flaglist
 *
 * Data1    <- The conferencenumber in which you want to flag files.
 * Data2
 * Data3    -> Errormsg 0 on success.

 * IOString <- The file(s) to be flagged, you can flag more files at the same
 *             time, but they must have spaces beetween each other flag.
 *             maximum of 12 chars per flag and overall 201 chars including
 *             the spaces. Note that the BBS filters double flags.
 *
 * Note: If Data1 is lower than 1 or higher than the last conference
 *       available, Data1 will be set to the current conference number!
 *
 * Note: Data3 is errormsg:
 *       0  means successfull flagged.
 *       1  means file allready flagged.
 *       2  means length of IOString is lower than  byte, maybe not true here,
 *                because of more files to be flagged.
 *       -1 means list element memory allocation faild.
 *       -2 means given conference not found, normaly not happens here,
 *                because of Data1 check.
 *       Think of that here may be flagged more than one file, this may have
 *       to result that 1, 2 and -1 musn't be correct!
 *       But it must be correct if IOString contains only one file.
 */

CONST NR_GETFLAGFILE=19
/* Get File from the Flaglist
 *
 * Data1    <- The conferencenumber from which you want to get a flagged file.
 * Data2
 * Data3
 * IOString -> The filename of the flagged file.
 * StructDummy1 -> The struct FileList.
 *
 * Note: This command counts the flagnumbers itself! That means if you got
 *       a flag, you will get the next flag if you call this commandd again!
 *       This happens till no more flags are available!
 *       To reset this you have to use the command: NR_ResetFlagFile!
 *       But if you use NR_ResetFlagFile you get also on that command the FIRST
 *       flagged file! That means first use NR_ResetFlagFile and get the
 *       first fileflag, from now on use NR_GetFlagFile to get the next
 *       flagged files... if the IOString is empty no more flagged files
 *       are available.
 *
 * Note: If Data1 is lower than 1 or higher than the last conference
 *       available, Data1 will be set to the current conference number!
 */

CONST NR_ACTIVENODE=20
/* Check for a specific Node exists
 *
 * Data1    <- The Node you want to check if it exists or not.
 * Data2    -> 1 if Node exists, 0 if it doesn't.
 * Data3
 * IOString
 */

CONST NR_ACTIVENODES=21
/* Retrieve a string of active&inactive nodes
 *
 * Data1
 * Data2
 * Data3
 * IOString -> A String contains on every charposition an X if the relative
 *             Node exists. Byte 0 stands for Node0 !
 *             A maximum of 200 Nodes will be checked.
 */

CONST NR_TIMEOUT=22
/* Retrieve the door timeout limit
 *
 * Data1
 * Data2    -> Contains the door timeout limit.
 * Data3
 * IOString
 */

CONST NR_MAINLINE=23
/* Retrieve the menu prompt arguments prior to the door being entered
 *
 * Data1
 * Data2
 * Data3
 * IOString -> Contains the MainLine, the full argumentstring which was
 *             used on starting this door!
 *             Note that FAME makes no difference on typing arguments!
 *             You can have so much spaces you are willing to on the menu
 *             command between arguments, FAME will interpret it!
 *             This means it could be possible that the String you get
 *             can look like this one: " who       u            force ".
 *             This means you should interpret it also!
 *             If this is to much work for you, you should use instead the
 *             commands: NR_GetFullArg, NR_GetArgument1 ,NR_GetArgument2,
 *             NR_GetArgument3 and NR_GetArgument4. The first has sorted
 *             the first 4 arguments, all other arguments are like they are
 *             typed in. NR_GetArgument(1-4) is every single argument.
 *             But on those commands you get ONLY the arguments, not the
 *             commandname!
 */

CONST NR_NODEID=24
/* Retrieve the Node number for  the current node
 *
 * Data1
 * Data2    -> The current Nodenumber.
 * Data3
 * IOString
 */

CONST NR_MINUPCPS=25
/* Retreive Min Upload CPS
 *
 * Data1
 * Data2    -> Users min. Upload CPS.
 * Data3
 * IOString
 */

CONST NR_GETCONFNUM=26
/* Retrieve the current Conf number
 *
 * Data1
 * Data2    -> Cotains the actual Conferencenumber.
 * Data3
 * IOString
 */

CONST NR_SEARCHACCOUNT=27
/* Looks for Account in Userdatas
 *
 * Data1    <- The Usernumber u are searching for.
 * Data2
 * Data3
 * IOString
 * StructDummy1 -> The userkey structure of the user.
 *                 You have to check the ReturnCode! If it's non zero the
                   StructDummy1 isn't valid!!!
 */

CONST NR_STAMPTIME=28
/* Retrieve the current time string
 *
 * Data1
 * Data2
 * Data3
 * IOString -> Contains the current timestring.
 */

CONST NR_CURRTIME=29
/* Retrieve the current time in seconds since January
 *
 * Data1
 * Data2    -> Contains the current timevalue.
 * Data3
 * IOString
 */

CONST NR_THISCONFACCESS=30
/* Retrieve the users conference access of selected Conf
 *
 * Data1    <- The Confnumber you are checking the access of the online user.
 * Data2    -> 1 if the user has access to the conference, else 0.
 * Data3
 * IOString
 *
 * Note: If Data1 is lower than 1 or higher than the last conference
 *       available, Data1 will be set to the current conference number!
 */

CONST NR_NAME=31
/* Retrieve users name/handle
 *
 * Data1
 * Data2
 * Data3
 * IOString -> Contains the UserName.
 */

CONST NR_PASSWORD=32
/* Retrieve users password
 *
 * Data1
 * Data2
 * Data3
 * IOString -> Contains the Userpassword.
 */

CONST NR_LOCATION=33
/* Retrieve users location
 *
 * Data1
 * Data2
 * Data3
 * IOString -> Contains the User's location.
 */

CONST NR_FROM=34
/* Retrieve users from
 *
 * Data1
 * Data2
 * Data3
 * IOString -> Contains the User's origin.
 */

CONST NR_PHONENUMBER=35
/* Retrieve users phone number
 *
 * Data1
 * Data2
 * Data3
 * IOString -> Contains the User's phonenumber.
 */

CONST NR_SLOTNUMBER=36
/* Retrieve users slot number
 *
 * Data1
 * Data2    -> Contains the User's slotnumber.
 * Data3
 * IOString
 */

CONST NR_ACCESSLEVEL=37
/* Retrieve users access level
 *
 * Data1
 * Data2    -> Contains the User's level.
 * Data3
 * IOString
 */

CONST NR_RATIOTYPE=38
/* Retrieve users ratiotype
 *
 * Data1
 * Data2    -> Contains the User's ratiotype.
 * Data3
 * IOString
 */

CONST NR_RATIO=39
/* Retrieve users ratio
 *
 * Data1
 * Data2    -> Contains the User's ratio.
 * Data3
 * IOString
 */

CONST NR_COMPTYPE=40
/* Retrieve users computertype code
 *
 * Data1
 * Data2    -> Contains the User's computertype code.
 * Data3
 * IOString -> Contains the User's computer.
 */

CONST NR_MODEMTYPE=41
/* Retrieve users modemtype code
 *
 * Data1
 * Data2    -> Contains the User's modemtype code.
 * Data3
 * IOString -> Contains the User's modem.
 */

CONST NR_MESSAGEPOSTED=42
/* Retrieve users messagesposted
 *
 * Data1
 * Data2
 * Data3    -> Contains the User's message posted.
 * IOString
 */

CONST NR_MESSAGEREAD=43
/* Retrieve the number of readen Msg's
 *
 * Data1
 * Data2
 * Data3    -> Contains the User's message read.
 * IOString
 */

CONST NR_NOCALLS=44
/* Retrieve number of usercalls
 *
 * Data1
 * Data2
 * Data3    -> Contains the User's calls.
 * IOString
 */

CONST NR_TIMELASTON=45
/* Retrieve time user last called
 *
 * Data1
 * Data2    -> Contains the User's last time called.
 * Data3
 * IOString
 */

CONST NR_TIMEUSED=46
/* Retrieve timeused today
 *
 * Data1
 * Data2    -> Contains the User's time used.
 * Data3
 * IOString
 */

CONST NR_TIMELIMIT=47
/* Retrieve timeallowed for a user
 *
 * Data1
 * Data2    -> Contains the User's time limit.
 * Data3
 * IOString
 */

CONST NR_TIMEREMAIN=48
/* Retrieve total time remaining
 *
 * Data1
 * Data2    -> Contains the User's total time remain.
 * Data3
 * IOString
 */

CONST NR_STAMPLASTON=49
/* Retrieve the date string containing the date when the user last logged on
 *
 * Data1
 * Data2
 * Data3
 * IOString -> Contains the User's last time called as an timestring.
 */

CONST NR_CONFACCESS=50
/* Retrieve the users conference access
 *
 * Data1
 * Data2
 * Data3
 * IOString -> Contains the User's conference access alias.
 */

CONST NR_UPLOADS=51
/* Retrieve number of useruploads
 *
 * Data1
 * Data2
 * Data3    -> Contains the User's number of uploads.
 * IOString
 */

CONST NR_DOWNLOADS=52
/* Retrieve number of userdownloads
 *
 * Data1
 * Data2
 * Data3    -> Contains the User's number of downloads.
 * IOString
 */

CONST NR_BYTESUPLOAD=53
/* Retrieve bytes uploads per user
 *
 * Data1
 * Data2
 * Data3    -> Contains the User's bytes uploaded.
 * IOString
 */

CONST NR_BYTESDOWNLOAD=54
/* Retrieve bytes downloaded per user
 *
 * Data1
 * Data2
 * Data3    -> Contains the User's bytes downloaded.
 * IOString
 */

CONST NR_DAILYBYTELIMIT=55
/* Retrieve a users daily byte
 *
 * Data1
 * Data2
 * Data3    -> Contains the User's daily byte limit.
 * IOString
 */

CONST NR_DAILYFILELIMIT=56
/* Retrieve a users daily files
 *
 * Data1
 * Data2
 * Data3    -> Contains the User's daily file limit.
 * IOString
 */

CONST NR_DAILYBYTEDLD=57
/* Retrieve daily bytes downloaded
 *
 * Data1
 * Data2
 * Data3    -> Contains the User's daily bytes downloaded.
 * IOString
 */

CONST NR_DAILYFILEDLD=58
/* Retrieve daily files downloaded
 *
 * Data1
 * Data2
 * Data3    -> Contains the User's daily files downloaded.
 * IOString
 */

CONST NR_DAILYBYTEBONUS=59
/* Retrieve daily byte bonus from user
 *
 * Data1
 * Data2
 * Data3    -> Contains the User's daily byte bonus.
 * IOString
 */

CONST NR_DAILYFILEBONUS=60
/* Retrieve daily file bonus from user
 *
 * Data1
 * Data2
 * Data3    -> Contains the User's daily file bonus.
 * IOString
 */

CONST NR_EXPERT=61
/* Retrieve expert mode
 *
 * Data1
 * Data2    -> 1 means Expertmode is set, else 0 means it's not.
 * Data3
 * IOString
 */

CONST NR_NUMLINES=62
/* Retrieve user number of lines
 *
 * Data1
 * Data2    -> Contains the User's number of lines.
 * Data3
 * IOString
 *
 * Note: The number of lines is in real 1 line more than u will get here,
 *       because of scrolling texts u must have 1 line in reserve.
 */

CONST NR_BIRTHDAY=63
/* Retrieve the users Birthday
 *
 * Data1
 * Data2
 * Data3
 * IOString -> Contains the User's birthday.
 */

CONST NR_MENUPROMPT=64
/* Retrieve the users Menuprompt
 *
 * Data1
 * Data2
 * Data3
 * IOString -> Contains the User's menuprompt.
 */

CONST NR_EDITORTYPE=65
/* Retrieve the users Editor type
 *
 * Data1
 * Data2    -> Contains the User's editor type.
 * Data3
 * IOString
 */

CONST NR_XFERPROT=66
/* Retrieve the User's (last) used transfer protocol
 *
 * Data1
 * Data2    -> Contains the User's (last) used transfer protocol value.
 * Data3
 * IOString -> Contains the User's (last) used transfer protocol name.
 */

CONST NR_LOSTCARRIER=67
/* Retrieve the number of Los Carriers
 *
 * Data1
 * Data2    -> Contains the User's numbers of loss carriers.
 * Data3
 * IOString
 */

CONST NR_ZOOM=68
/* Retrieve the ZOOM type
 *
 * Data1
 * Data2    -> Contains the User's Zoom type.
 * Data3
 * IOString
 */

CONST NR_SYSLANGUAGE=69
/* Retrieve the current System language specifications
 *
 * Data1
 * Data2
 * Data3
 * IOString -> Contains the User's tetx language specification.
 */

CONST NR_LANGUAGE=70
/* Retrieve the current language specifications
 *
 * Data1
 * Data2    -> Contains the User's current language setting.
 * Data3
 * IOString
 */

CONST NR_LINECOUNT=71
/* Retrieve the current number of lines viewed
 *
 * Data1
 * Data2    -> Contains the current number of lines viewed.
 * Data3
 * IOString
 */

CONST NR_ANSICOLOR=72
/* Retrieve the ANSI flag
 *
 * Data1
 * Data2    -> Contains the User's Ansiflag.
 * Data3
 * IOString
 */

CONST NR_SENTBY=73
/* Retrieve the SentBy Line
 *
 * Data1    <- The conferencenumber in which u want to change the SentByLine
 * Data2
 * Data3
 * IOString -> Contains the User's SentBy line.
 */

CONST NR_AUTOFILEID=74
/* Retrieve the Auto FILE_ID.DIZ
 *
 * Data1
 * Data2    -> Contains the User's fileid flag.
 * Data3
 * IOString
 */

CONST NR_NEWMESSAGE=75
/* Retrieve the NewMessage Status
 *
 * Data1
 * Data2    -> Contains the User's newscan flag.
 * Data3
 * IOString
 */

CONST NR_GOODBYE=76
/* Retrieve the Goodbye Flag
 *
 * Data1
 * Data2    -> Contains the User's (fast)goodbye flag.
 * Data3
 * IOString
 */

CONST NR_VIEWFLAG=77
/* Retrieve the View Flag
 *
 * Data1
 * Data2    -> Contains the User's view flag.
 * Data3
 * IOString
 */

CONST NR_ZIPPYFLAG=78
/* Retrieve the Zippy Flag
 *
 * Data1
 * Data2    -> Contains the User's zippy flag.
 * Data3
 * IOString
 */

CONST NR_REPLYMSGFLAG=79
/* Retrieve the ReplyMS Flag
 *
 * Data1    <- The conferencenumber in which u want to change the SentByLine
 * Data2    -> Contains the User's reply msg flag
 * Data3
 * IOString
 */

CONST NR_NUKEDFILES=80
/* Retrieve the NukedFiles
 *
 * Data1
 * Data2
 * Data3    -> Contains the User's nuked files.
 * IOString
 */

CONST NR_NUKEDBYTES=81
/* Retrieve the NukedBytes
 *
 * Data1
 * Data2
 * Data3    -> Contains the User's nuked bytes.
 * IOString
 */

CONST NR_MINDOWNCPS=82
/* Retrieve the Min Downlaod CPS
 *
 * Data1
 * Data2    -> Contains the User's min. download CPS.
 * Data3
 * IOString
 */

CONST NR_GETEDITSTRING=83
/* Prompt the user for a specified number of chars and edits String
 *
 * Data1    <- Max. chars can be typed.
 * Data2    <- Flag for different modes.
 * Data3
 * IOString <- String will be inserted to the edit array.
 * IOString -> Filled string with chars typed by the user.
 *
 * Data2 flag description:
 *
 * 0 Simple stringingput without edit and other features.
 * 1 Stringingput for chatmode. (uses wordwrapping. Do not use this to get a
 *   complete string, because after a wordwrap the string changes).
 * 2 Stringingput for MsgEditor. (U can't use this flag! It can causes damage
 *   because it uses a list. Flag denied.
 * 3 Stringingput for bulletinviewer. (It returns cursorkeys left and right
 *   for the bullview to switch -(x)-BullHelp.txt texts.
 * 4 The same as 0, but all chars will be displayed as *. Like: ****** ,
 *   but they musn't be displayed as * on console! If the flag "Display
 *   Levels to SysOp" is set the chars will be displayed as real chars
 *   on console.
 * 5 Unused.
 * 6 A real feature! This is the best flag u can use! U let the user totaly
 *   edit his string. The user can walk into the string, delete chars with
 *   delete and backspace and the user can insert at every position new chars.
 *
 * Higher flags are reserved and can't be used.
 * Normaly u can only use flag 0 and 6 !!!
 *
 * If IOString contains data on calling this command, the user will get this
 * data into the prompt, and can edit it (flag 6).
 */

CONST NR_RESETFLAGFILE=84
/* Reset and get the first file from the Flaglist
 *
 * Data1    <- The conferencenumber from which u want to get a flagged file.
 * Data2
 * Data3
 * IOString -> The filename of the first flagged file.
 * StructDummy1 -> The struct FileList.
 *
 * Note: Use NR_ResetFlagFile at first! You will reset the internal counter
 *       and get the first flagged file! That means first use NR_ResetFlagFile
 *       and get the first fileflag, from now on use NR_GetFlagFile to get
 *       the next flagged files...
 *       If IOString is empty no flagged files are available.
 *
 * Note: If Data1 is lower than 1 or higher than the last conference
 *       available, Data1 will be set to the current conference number!
 */

CONST NR_DELETEFLAGFILE=85
/* Delete File of the Flaglist
 *
 * Data1    <- The conferencenumber in which u want to delete a flagged file.
 * Data2
 * Data3
 * IOString <- The file or match to delete file(s).
 *
 * Note: U can use a full filename and also a match like abc* or abc+
 *       or * or + and so on to delete files.
 *
 * Note: If Data1 is lower than 1 or higher than the last conference
 *       available, Data1 will be set to the current conference number!
 */

CONST NR_DELFLAGFILENUM=86
/* Delete File of the Flaglist with the fileflagnumber
 *
 * Data1    <- The conferencenumber in which u want to delete a flagged file.
 * Data2    <- The number of a flag u want to delete.
 * Data3
 * IOString
 *
 * Note: If Data1 is lower than 1 or higher than the last conference
 *       available, Data1 will be set to the current conference number!
 */

CONST NR_GETFULLARG=87
/* Retrieve the full Argumentstring
 *
 * Data1
 * Data2
 * Data3
 * IOString -> Will be the string of all arguments.
 *
 * The first 4 arguments will automaticly be sorted by FAME, arguments after
 * argument with a single space between each other, but all other orguments
 * behind 4 will be like they are typed it.
 */

CONST NR_GETARGUMENT1=88
/* Get the first argument
 *
 * Data1
 * Data2
 * Data3
 * IOString -> Will be the first argument seperatly.
 */

CONST NR_GETARGUMENT2=89
/* Get the second argument
 *
 * Data1
 * Data2
 * Data3
 * IOString -> Will be the second argument seperatly.
 */

CONST NR_GETARGUMENT3=90
/* Get the third argument
 *
 * Data1
 * Data2
 * Data3
 * IOString -> Will be the third argument seperatly.
 */

CONST NR_GETARGUMENT4=91
/* Get all other arguments
 *
 * Data1
 * Data2
 * Data3
 * IOString -> Will be the fourth and all other arguments.
 */

CONST NR_WAITCHAR=92
/* Get a char with waiting for it
 *
 * Data1
 * Data2    -> The char typed be the user.
 * Data3
 * IOString <- String will be displayed to the user.
 *
 * Note: You get all ascii codes also RAW codes, but only the CSI codes and
 *       escape-sequences will be filtered, because the BBS has to check for
 *       FKeys and more.
 *       You will get the cursorkeys as the following values:
 *       4 for UP, 5 for DOWN, 3 for RIGHT and 2 for LEFT.
 */

CONST NR_GETCONFONTSIZE=93
/* Get the Console Font height and width
 *
 * Data1
 * Data2    -> height.
 * Data3    -> width.
 * IOString
 */

CONST NR_RESETANSI=94
/* Reset console and serial attributes to standart values
 *
 * Data1
 * Data2
 * Data3
 * IOString
 *
 * No Data needed.
 */

CONST NR_RESETANSIONEXIT=95
/* Set a flag to let the node reset console and serial attributes to
 * standart values on MC_ShutDown / MC_ShutDownLastWord
 *
 * Data1
 * Data2
 * Data3
 * IOString
 *
 * No Data needed.
 */

CONST NR_CONNUMLINES=96
/* Retrieve the number of lines from the console
 *
 * Data1
 * Data2    -> Contains the number of lines.
 * Data3
 * IOString
 *
 * This function is important if you must create a Screen "View" and the
 * user has more lines on his screen than the sysop on the user's node
 * screen. You may handle the sysop's display separately from the user view !
 *
 * Note: The number of lines is in real 1 line more than u will get here,
 *       because of scrolling texts u must have 1 line in reserve.
 */

CONST NR_NUMBEROFCHATS=97
/* Retrieve the number of chats
 *
 * Data1
 * Data2
 * Data3    -> Contains the number of chats.
 * IOString
 */

CONST NR_NUMBEROFPAGES=98
/* Retrieve the number of pages
 *
 * Data1
 * Data2    -> Contains the number of pages.
 * Data3
 * IOString
 *
 */

CONST NR_NUMBEROFDAYPAGES=99
/* Retrieve the number of day pages
 *
 * Data1
 * Data2    -> Contains the number of day pages.
 * Data3
 * IOString
 */

CONST NR_NUMOFPAGESALLOWED=100
/* Retrieve the number of pages allowed per day
 *
 * Data1
 * Data2    -> Contains the number of pages per day.
 * Data3
 * IOString
 */

CONST NR_NUMBEROFDAYRELOGS=101
/* Retrieve the number of day relogins
 *
 * Data1
 * Data2    -> Contains the number of day relogins.
 * Data3
 * IOString
 */

CONST NR_NUMOFRELOGSALLOWED=102
/* Retrieve the number of relogins allowed per day
 *
 * Data1
 * Data2    -> Contains the number of relogins per day.
 * Data3
 * IOString
 */

CONST NR_DOORHELP=103
/* Try to load and display online user help
 *
 * Data1
 * Data2
 * Data3
 * IOString <- Minimum Version.Revision string. Eample: "1.23"
 * StringPtr <- Help file name without any pathes.
 *
 * Note: Nearly all Arguments are invalid after usage!
 *       Especialy NR_MainLine and NR_GetArgument1 command arguments!
 */

CONST NR_SETDOORRETURNCODE=104
/* Set DoorReturnCode
 *
 * Data1    <- The new DoorReturnCode.
 * Data2
 * Data3
 * IOString
 */

CONST NR_GETDOORRETURNCODE=105
/* Retrieve DoorReturnCode
 *
 * Data1
 * Data2    -> Contains the DoorReturnCode.
 * Data3
 * IOString
 */

CONST NR_CLRFILEFLGLST=106
/* Delete all file flags in a single confernece
 *
 * Data1    <- The conference number.
 * Data2
 * Data3
 * IOString
 *
 * Note: If Data1 is lower than 1 or higher than the last conference
 *       available, Data1 will be set to the current conference number!
 */

CONST NR_CLRFILEFLGLSTS=107
/* Delete all file flags in all conferneces
 *
 * Data1
 * Data2
 * Data3
 * IOString
 */

CONST NR_GETRELATIVESTATUS=108
/* Retrieve the relative status. Has this node relative conferences?
 *
 * Data1
 * Data2    -> The relative status, if non 0 relative is on.
 * Data3
 * IOString
 */

CONST NR_ABSTOREL=109
/* Convert an absolut confernece number (real) to the relative one.
 *
 * Data1    <- Your absolut conference number.
 * Data2    -> The relative conference number.
 * Data3
 * IOString
 *
 * Note: If Data2 is 0 the user has no access to this conference.
 *
 * Note: If Data1 is lower than 1 or higher than the last conference
 *       available, Data1 will be set to the current conference number!
 */

CONST NR_RELTOABS=110
/* Convert a relative confernece number to the absolut (real) one.
 *
 * Data1    <- Your relative conference number.
 * Data2    -> The absolut conference number.
 * Data3
 * IOString
 *
 * Note: If Data1 is lower than 1 or higher than the last conference
 *       available, Data1 will be set to the current relative conference
 *       number!
 */

CONST NR_GETABORTIOPORT=111
/* Get the AbortIO MsgPort
 *
 * Data1
 * Data2
 * Data3
 * IOString
 * StructDummy1 -> The AbortIO MsgPort structure
 */

/*   ------------------------- NC commands --------------------------------
 */

CONST NC_TIMEOUT=200
/* Change the door timeout limit
 *
 * Data1    <- The new doortimeout.
 * Data2
 * Data3
 * IOString
 */

CONST NC_NAME=201
/* Change users name/handle
 *
 * Data1
 * Data2
 * Data3
 * IOString <- The new username of the online user (max. 30 chars).
 *
 * Note: If ReturnCode=1 the username allready exists! Nothing changed!
 */

CONST NC_PASSWORD=202
/* Change users password
 *
 * Data1
 * Data2
 * Data3
 * IOString <- The new password of the online user (max. 20 chars).
 */

CONST NC_LOCATION=203
/* Change users location
 *
 * Data1
 * Data2
 * Data3
 * IOString <- The new location of the online user (max. 30 chars).
 */

CONST NC_FROM=204
/* Change users from
 *
 * Data1
 * Data2
 * Data3
 * IOString <- The new origin of the online user (max. 30 chars).
 */

CONST NC_PHONENUMBER=205
/* Change users phone number
 *
 * Data1
 * Data2
 * Data3
 * IOString <- The new phonenumber of the online user (max. 15 chars).
 */

CONST NC_ACCESSLEVEL=206
/* Change users access level
 *
 * Data1    <- The new level of the online user.
 * Data2
 * Data3
 * IOString
 */

CONST NC_RATIOTYPE=207
/* Change users ratiotype
 *
 * Data1    <- The new ratiotype of the online user.
 * Data2
 * Data3
 * IOString
 */

CONST NC_RATIO=208
/* Change users ratio
 *
 * Data1    <- The new ratio of the online user.
 * Data2
 * Data3
 * IOString
 */

CONST NC_COMPTYPE=209
/* Change users computertype code
 *
 * Data1    <- The new computertype of the online user.
 * Data2
 * Data3
 * IOString <- The new computer.
 */

CONST NC_MODEMTYPE=210
/* Change users modemtype code
 *
 * Data1    <- The new modemtype of the online user.
 * Data2
 * Data3
 * IOString <- The new modem.
 */

CONST NC_MESSAGEPOSTED=211
/* Change users messagesposted
 *
 * Data1
 * Data2
 * Data3    <- The new messagesposted of the online user.
 * IOString
 */

CONST NC_MESSAGEREAD=212
/* Change the number of readen Msg's
 *
 * Data1
 * Data2
 * Data3    <- The new messageread of the online user.
 * IOString
 */

CONST NC_NOCALLS=213
/* Change number of usercalls
 *
 * Data1
 * Data2
 * Data3    <- The new number of calls of the online user.
 * IOString
 */

CONST NC_TIMELASTON=214
/* Change time user last called
 *
 * Data1    <- The new last time called of the online user.
 * Data2
 * Data3
 * IOString
 */

CONST NC_TIMEUSED=215
/* Change timeused today
 *
 * Data1    <- The new timeused today of the online user.
 * Data2
 * Data3
 * IOString
 */

CONST NC_TIMELIMIT=216
/* Change timeallowed for a user
 *
 * Data1    <- The new timeallowed of the online user.
 * Data2
 * Data3
 * IOString
 */

CONST NC_TIMEREMAIN=217
/* Change total time remaining
 *
 * Data1    <- The new total time remaining of the online user.
 * Data2
 * Data3
 * IOString
 */

CONST NC_UPLOADS=218
/* Change number of useruploads
 *
 * Data1
 * Data2
 * Data3    <- The new number of useruploads of the online user.
 * IOString
 */

CONST NC_DOWNLOADS=219
/* Change number of userdownloads
 *
 * Data1
 * Data2
 * Data3    <- The new number of userdownloads of the online user.
 * IOString
 */

CONST NC_BYTESUPLOAD=220
/* Change bytes uploads per user
 *
 * Data1
 * Data2
 * Data3    <- The new bytes uploaded of the online user.
 * IOString
 */

CONST NC_BYTESDOWNLOAD=221
/* Change bytes downloaded per user
 *
 * Data1
 * Data2
 * Data3    <- The new bytes downloaded of the online user.
 * IOString
 */

CONST NC_DAILYBYTELIMIT=222
/* Change a users daily byte
 *
 * Data1
 * Data2
 * Data3    <- The new users daily byte of the online user.
 * IOString
 */

CONST NC_DAILYFILELIMIT=223
/* Change a users daily files
 *
 * Data1
 * Data2
 * Data3    <- The new users daily files of the online user.
 * IOString
 */

CONST NC_DAILYBYTEDLD=224
/* Change daily bytes downloaded
 *
 * Data1
 * Data2
 * Data3    <- The new daily bytes downloaded of the online user.
 * IOString
 */

CONST NC_DAILYFILEDLD=225
/* Change daily files downloaded
 *
 * Data1
 * Data2
 * Data3    <- The new daily files downloaded of the online user.
 * IOString
 */

CONST NC_DAILYBYTEBONUS=226
/* Change daily byte bonus from user
 *
 * Data1
 * Data2
 * Data3    <- The new daily byte bonus of the online user.
 * IOString
 */

CONST NC_DAILYFILEBONUS=227
/* Change daily file bonus from user
 *
 * Data1
 * Data2
 * Data3    <- The new daily file bonus of the online user.
 * IOString
 */

CONST NC_EXPERT=228
/* Change expert mode
 *
 * Data1    <- The new expert mode of the online user.
 * Data2
 * Data3
 * IOString
 */

CONST NC_NUMLINES=229
/* Change user number of lines
 *
 * Data1    <- The new number of lines of the online user.
 * Data2
 * Data3
 * IOString
 *
 * Note: You have to set Data1 one line less than the full number of lines of
 *       the screen, because of scrolling texts u must have 1 line in reserve.
 */

CONST NC_BIRTHDAY=230
/* Change the users Birthday
 *
 * Data1
 * Data2
 * Data3
 * IOString <- The new Birthday of the online user (max. 10 chars).
 */

CONST NC_MENUPROMPT=231
/* Change the users Menuprompt
 *
 * Data1
 * Data2
 * Data3
 * IOString <- The new Menuprompt of the online user (max. 200 chars).
 */

CONST NC_EDITORTYPE=232
/* Change the users Editor type
 *
 * Data1    <- The new Editor type of the online user.
 * Data2
 * Data3
 * IOString
 */

CONST NC_XFERPROT=233
/* obsolete
 *
 * Data1   
 * Data2
 * Data3
 * IOString
 */

CONST NC_ZOOM=234
/* Change the ZOOM type
 *
 * Data1    <- The new ZOOM type of the online user.
 * Data2
 * Data3
 * IOString
 */

CONST NC_SYSLANGUAGE=235
/* Change the current System language specifications
 *
 * Data1
 * Data2
 * Data3
 * IOString <- The new System language of the online user (max. 30 chars).
 */

CONST NC_LANGUAGE=236
/* Change the current language specifications
 *
 * Data1    <- The new language of the online user.
 * Data2
 * Data3
 * IOString
 */

CONST NC_LINECOUNT=237
/* Change the user's current number of lines viewed
 *
 * Data1    <- The new number of lines viewed.
 * Data2
 * Data3
 * IOString
 */

CONST NC_ANSICOLOR=238
/* Change the ANSI flag
 *
 * Data1    <- The new ANSI flag of the online user.
 * Data2
 * Data3
 * IOString
 */

CONST NC_SENTBY=239
/* Change the SentBy Line
 *
 * Data1    <- The conferencenumber in which u want to change the SentByLine
 * Data2
 * Data3
 * IOString <- The new SentBy Line of the online user (max 45 chars).
 *
 * Note: If Data1 is lower than 1 or higher than the last conference
 *       available, Data1 will be set to the current conference number!
 */

CONST NC_AUTOFILEID=240
/* Change the Auto FILE_ID.DIZ
 *
 * Data1    <- The new Auto FILE_ID.DIZ of the online user.
 * Data2
 * Data3
 * IOString
 */

CONST NC_NEWMESSAGE=241
/* Change the NewMessage Status
 *
 * Data1    <- The new NewMessage Status of the online user.
 * Data2
 * Data3
 * IOString
 */

CONST NC_GOODBYE=242
/* Change the Goodbye Flag
 *
 * Data1    <- The new Goodbye Flag of the online user.
 * Data2
 * Data3
 * IOString
 */

CONST NC_VIEWFLAG=243
/* Change the View Flag
 *
 * Data1    <- The new View Flag of the online user.
 * Data2
 * Data3
 * IOString
 */

CONST NC_ZIPPYFLAG=244
/* Change the Zippy Flag
 *
 * Data1    <- The new Zippy Flag of the online user.
 * Data2
 * Data3
 * IOString
 */

CONST NC_REPLYMSGFLAG=245
/* Change the ReplyMSG Flag
 *
 * Data1    <- The conferencenumber you are going to change the ReplyMSG Flag.
 * Data2    <- The new ReplyMSG Flag of the online user.
 * Data3
 * IOString
 *
 * Note: If Data1 is lower than 1 or higher than the last conference
 *       available, Data1 will be set to the current conference number!
 */

CONST NC_NUKEDFILES=246
/* Change the NukedFiles
 *
 * Data1
 * Data2
 * Data3    <- The new NukedFiles of the online user.
 * IOString
 */

CONST NC_NUKEDBYTES=247
/* Change the NukedBytes
 *
 * Data1
 * Data2
 * Data3    <- The new NukedBytes of the online user.
 * IOString
 */

CONST NC_MINUPCPS=248
/* Change the Min Upload CPS
 *
 * Data1    <- The new Min Upload CPS of the online user.
 * Data2
 * Data3
 * IOString
 */

CONST NC_MINDOWNCPS=249
/* Change the Min Download CPS
 *
 * Data1    <- The new Min Download CPS of the online user.
 * Data2
 * Data3
 * IOString
 */

CONST NC_LOSTCARRIER=250
/* Change the number of Los Carriers
 *
 * Data1    <- The new number of Los Carriers of the online user.
 * Data2
 * Data3
 * IOString
 */

CONST NC_NUMBEROFCHATS=251
/* Change the number of chats
 *
 * Data1
 * Data2
 * Data3    <- The new number of chats.
 * IOString
 *
 */

CONST NC_NUMBEROFPAGES=252
/* Change the number of pages
 *
 * Data1    <- The new number of pages.
 * Data2
 * Data3
 * IOString
 *
 */

CONST NC_NUMBEROFDAYPAGES=253
/* Change the number of day pages
 *
 * Data1    <- The new number of day pages.
 * Data2
 * Data3
 * IOString
 *
 */

CONST NC_NUMBEROFDAYRELOGS=254
/* Retrieve the number of day relogins
 *
 * Data1    <- The new number of day relogins.
 * Data2
 * Data3
 * IOString
 */

/*   ------------------------- CF commands --------------------------------
 */

CONST CF_SHOWTEXT=400
/* Shows a Textfile without Suffix
 *
 * Data1
 * Data2
 * Data3
 * IOString <- the complete path and filename of the text to be viewed.
 *
 * Note: U have to give the complete path and filename incl. the suffix!
 *       BBS:Bull.txt
 */

CONST CF_SHOWTEXTSUFFIX=401
/* Shows a Textfile with full Suffix
 *
 * Data1
 * Data2
 * Data3
 * IOString <- the complete path and filename of the text to be viewed.
 *
 * Note: U have to give the complete path and filename, but without suffix!
 *       BBS:Bull can be BBS:Bull.txt or BBS:Bull.ger ...
 */

CONST CF_SHOWTEXTSUFLVL=402
/* Shows a Textfile with full Suffix & Level
 *
 * Data1
 * Data2
 * Data3
 * IOString <- the complete path and filename of the text to be viewed.
 *
 * Note: U have to give the complete path and filename, but without suffix!
 *       The Level will automaticly be searched and inserted!
 *       BBS:Bull can be BBS:Bull100.txt or BBS:Bull255.txt or BBS:Bull10.ger
 */

CONST CF_EXECUTECOMMAND=403
/* Execute a menu command including doors if available
 *
 * Data1
 * Data2
 * Data3
 * IOString <- The command to be executed.
 */

CONST CF_INTERNALCMD=404
/* Execute an internal menu command
 *
 * Data1
 * Data2
 * Data3
 * IOString <- The internal menu command to be executed.
 */

CONST CF_ZMODEMSEND=405
/* Send file to the user via Zmodem protocol
 *
 * Data1
 * Data2    -> Returns the status. 1 means all seems to be going right.
 *             0 means not supported localy.
 *             -1 means xprzmodem.library not open.
 * Data3
 * IOString <- The File to be sended to the user.
 */

CONST CF_ZMODEMRECEIVE=406
/* Receive files via Zmodem protocol
 *
 * Data1
 * Data2    -> Returns the status. 1 means all seems to be going right.
 *             0 means xprzmodem.library not open.
 * Data3
 * IOString <- The path for the file to be sended to.
 *
 * Note: You have to give a path! Else the transfer won't begin!
 */

CONST CF_ZMODEMSENDLST=407
/* Send files to the user via Zmodem protocol from Flaglist
 *
 * Data1
 * Data2    -> Returns the status. 1 means all seems to be going right.
 *             0 means not supported localy.
 *             -1 means xprzmodem.library not open.
 * Data3
 * IOString
 * StringPtr <- A Stringpointer of nearly unlimited filenames incl. path.
 *              Between every single path/filename has to be a space.
 *              Maximum filelength of path+filename is 100 chars.
 *              Example: "RAM:File1.123 RAM:File2.123 RAM:ENV/TIME"
 */

CONST CF_RETURNCOMMAND=408
/* Execute a command/door.
 *
 * Data1
 * Data2
 * Data3
 * IOString <- The command to be executed.
 *
 * Note: To delete a previous ReturnCommand Request overwrite it with a
 *       new request, or use "" to delete it really.
 */

CONST CF_SETFLAGFILE=409
/* Add File to the Door own Flaglist !NOT IMPLEMENTED YET!
 *
 * Data1
 * Data2
 * Data3
 * IOString
 */

CONST CF_GETFLAGFILE=410
/* Get File from the Door own Flaglist !NOT IMPLEMENTED YET!
 *
 * Data1
 * Data2
 * Data3
 * IOString
 */

CONST CF_CALLERSLOG=411
/* add a line of text to the callers.log
 *
 * Data1
 * Data2
 * Data3
 * IOString <- The string added to the callers.log.
 */

CONST CF_UDLOG=412
/* add a line of text to the ud.log
 *
 * Data1
 * Data2
 * Data3
 * IOString <- The string added to the ud.log.
 */

CONST CF_DOORLOG=413
/* add a line of text to the Door.log
 *
 * Data1
 * Data2
 * Data3
 * IOString <- The string added to the Door.log.
 */

CONST CF_COMPTYPE=414
/* Computertype change with build in selector
 *
 * Data1    <- Old or default computertype.
 * Data2
 * Data3
 * IOString
 */

CONST CF_MODEMTYPE=415
/* Modemtype change with build in selector
 *
 * Data1    <- Old or default modemtype.
 * Data2
 * Data3
 * IOString
 */

CONST CF_SYSLANGUAGE=416
/* Systemtextlanguage changing with build in selector
 *
 * Data1    <- Old or default system language.
 * Data2
 * Data3
 * IOString
 */

CONST CF_LANGUAGE=417
/* Textlanguage (Suffix) changing with build in selector
 *
 * Data1    <- Old or default language.
 * Data2
 * Data3
 * IOString
 */

CONST CF_NUMLINES=418
/* number of lines changing with build in selector
 *
 * Data1    <- 0 if selector should appear with prompt for numbers
 *             or higer 0 to switch to the given value without prompt.
 * Data2
 * Data3
 * IOString
 */

CONST CF_SHTXTSUFLVLCYC=419
/* Shows a Textfile with full Suffix & Level & Cycle
 *
 * Data1    <- 1 means use suffix .txt only. 0 means use users sys language.
 * Data2
 * Data3
 * IOString <- The path where the files are located.
 * StringPtr <- The filename itself, without path!
 * IOString -> The complete filepath and name with cyclenumber and more...
 *
 * Example: IOString<-"BBS:Screens" StringPtr<-"Bull" Data1<-"1"
 *          is trying to view a file with cycle.
 *          IOString->"BBS:Screens/1-Bull.ger" can be the result.
 *          If no cycle texts can be found the BBS tries to use:
 *          "BBS:Screens/Bull.ger" if also no Bull.ger exists the BBS tries
 *          to use "BBS:Screens/Bull.txt".
 */

CONST CF_SHOWTEXTSETABLE=420
/* Shows a Textfile free configurable
 *
 * Data1    <- 0 means don't cycle, else cycle.
 * Data2    <- 1 means use users language, 0 means u have to set the
 *             suffix your self!
 * Data3    <- 1 means use suffix .txt only. 0 means use users sys language.
 *             Only available if Data1 isn't 0!
 * IOString <- If Data1 isn't 0 IOString is the path where the files are
 *             located, else IOString ist the full path+filename.
 * StringPtr <- The filename itself, without path!
 *             Only available if Data1 isn't 0!
 * IOString -> The complete filepath and name (with cyclenumber and more...)
 * StructDummy1 <- "-1" means only users suffix will be added as suffix.
 *                 "-2" means .GR or if .GR not exists GR1 will be added
 *                 as suffix! This is used for Paragon Door texts.
 *                 If the value of StructDummy1 is higer than 0 (Atol()),
 *                 for example it's 10, than it will be used as the Level
 *                 like: Menu10.txt
 *                 If the value of StructDummy1 id 0 (Atol()), than the
 *                 next lower level text will be used
 *                 like: Menu300.txt or Menu255.txt. It counts down from
 *                 1000 to 0, but not every single Level! Only in 5 steps.
 *                 Note: StructDummy1 is only available if Data2 is 1!
 */

CONST CF_INTERNRETURNCMD=421
/* Execute an internal command.
 *
 * Data1
 * Data2
 * Data3
 * IOString <- The command to be executed.
 *
 * Note: To delete a previous ReturnCommand Request overwrite it with a
 *       new request, or use "" to delete it really.
 */

CONST CF_DOCALLERSLOG=422
/* Write to any <x>.log
 *
 * Data1    <- phase (type).
 * Data2    <- <x>.log type.
 * Data3
 * IOString <- The string added to the <x>.log.
 */

CONST CF_SAVEWHEREPHASE=423
/* Save whereiam phase temporär.
 *
 * Data1
 * Data2
 * Data3
 * IOString
 */

CONST CF_RESTWHEREPHASE=424
/* Restore temporär saved whereiam phase.
 *
 * Data1
 * Data2
 * Data3
 * IOString
 */

CONST CF_FILECOPYMOVE=425
/* Copy or move a file.
 *
 * Data1    <- if 1 then move, else copy file.
 * Data2    -> Returncode. If true than there was an error.
 * Data3
 * IOString <- Source file.
 * StringPtr -> Destination file.
 */

/*   ------------------------- SR commands --------------------------------
 */

CONST SR_CONFNAME=600
/* Retrieve the conference name
 *
 * Data1    <- The conference number.
 * Data2
 * Data3
 * IOString -> The requested conferencename.
 *
 * Note: If Data1 is lower than 1 or higher than the last conference
 *       available, Data1 will be set to the current conference number!
 */

CONST SR_CONFLOCATION=601
/* Retrieve the conference location
 *
 * Data1    <- The conference number.
 * Data2
 * Data3
 * IOString -> The requested conferencelocation.
 *
 * Note: If Data1 is lower than 1 or higher than the last conference
 *       available, Data1 will be set to the current conference number!
 */

CONST SR_CONFNUM=602
/* Retrieve the current conference number
 *
 * Data1
 * Data2    -> The actual conferencenumber.
 * Data3    -> The relative conferencenumber.
 * IOString
 *
 * Note: Normaly if the relative conferencenumber is 0 the user has no access
 *       to this conference, but this can't happen here.
 */

CONST SR_BBSLOCATION=603
/* Retrieve the current BBS location
 *
 * Data1
 * Data2
 * Data3
 * IOString -> The BBS Location.
 */

CONST SR_STATUS=604
/* Retrieve the current status of the node
 *
 * Data1
 * Data2
 * Data3
 * IOString -> Contains the status.
 */

CONST SR_SCREENADRESS=605
/* Retrieve the screen address
 *
 * Data1
 * Data2
 * Data3
 * IOString -> Contains the hex screenadress.
 */

CONST SR_TASKPRI=606
/* Retrieve the priority the node is running at
 *
 * Data1
 * Data2    -> Contains the Nodepriority.
 * Data3
 * IOString
 */

CONST SR_RAWSCREENADRESS=607
/* Retrieve the screen address of the node
 *
 * Data1
 * Data2    -> Contains the raw screenadress.
 * Data3
 * IOString
 */

CONST SR_FAMEVERSION=608
/* Retrieve the current version string of FAME
 *
 * Data1
 * Data2    -> Contains the versionnumber of FAME.
 * Data3    -> Contains the revsionnumber of FAME.
 * IOString -> Contains the versionstring of FAME.
 */

CONST SR_CHATSET=609
/* Retrieve the chat status
 *
 * Data1
 * Data2    -> Contains the Chat flag.
 * Data3
 * IOString
 */

CONST SR_ENVSTAT=610
/* Retrieve the current env stat variable code
 *
 * Data1
 * Data2    -> Contains the env stat variable code.
 * Data3
 * IOString
 */

CONST SR_NODEDEVICE=611
/* Retrieve the node device name
 *
 * Data1
 * Data2
 * Data3
 * IOString -> Contains the devicename.
 */

CONST SR_NODEUNIT=612
/* Retrieve the node unit number
 *
 * Data1
 * Data2    -> Contains the unit number of the used device.
 * Data3
 * IOString
 */

CONST SR_NODEBAUD=613
/* Retrieve the initialized baud rate of the node
 *
 * Data1
 * Data2    -> Contains the initial baud rate of the node.
 * Data3
 * IOString
 */

CONST SR_NODENUMBER=614
/* Retrieve the node nummber
 *
 * Data1
 * Data2    -> Contains the nodenumber of this node.
 * Data3
 * IOString
 */

CONST SR_MCI=615
/* Send mci text to FAME
 *
 * Data1    <- If non zero a return will be done at the end.
 * Data2    -> The Returnvalue. 0 everything is ok, non zero means
 *             there was an error.
 * Data3
 * IOString <- The MCI-string to be interpreted.
 */

CONST SR_GETTASK=616
/* Finds the current nodes task address
 *
 * Data1
 * Data2
 * Data3
 * IOString
 * StructDummy1 -> Is the (struct Process *) of this Node.
 */

CONST SR_NODEBAUDRATE=617
/* Retrieve the current users connect rate
 *
 * Data1
 * Data2    -> Contains the connect rate.
 * Data3
 * IOString
 */

CONST SR_LOGONTYPE=618
/* Retrieve the LOGONTYPE
 *
 * Data1
 * Data2    -> Contains the logontype.
 * Data3
 * IOString
 */

CONST SR_SCRLEFT=619
/* Retrieve the screen coordinates
 *
 * Data1
 * Data2    -> Contains the screenleft.
 * Data3
 * IOString
 */

CONST SR_SCRTOP=620
/* Retrieve the screen coordinates
 *
 * Data1
 * Data2    -> Contains the screentop.
 * Data3
 * IOString
 */

CONST SR_SCRWIDTH=621
/* Retrieve the screen coordinates
 *
 * Data1
 * Data2    -> Contains the screenwidth.
 * Data3
 * IOString
 */

CONST SR_SCRHEIGHT=622
/* Retrieve the screen coordinates
 *
 * Data1
 * Data2    -> Contains the screenheight.
 * Data3
 * IOString
 */

CONST SR_PURGELINE=623
/* Abort serial input
 *
 * Data1
 * Data2
 * Data3
 * IOString
 *
 * No Data needed.
 */

CONST SR_NONSTOPTEXT=624
/* Retrieve the NONSTOP text scrolling flag
 *
 * Data1
 * Data2    -> Contains the nonstop flag.
 * Data3
 * IOString
 */

CONST SR_GOODFILE=625
/* Retrieve the results of a tested file after upload
 *
 * Data1
 * Data2    -> Contains the filestatus.
 * Data3
 * IOString
 */

CONST SR_LASTACCOUNTNUM=626
/* Retrieve the Last Account number
 *
 * Data1
 * Data2    -> Contains the number of the last available account.
 * Data3
 * IOString
 */

CONST SR_PURGELINESTART=627
/* Begin serial input Abort
 *
 * Data1
 * Data2
 * Data3
 * IOString
 *
 * No Data needed.
 */

CONST SR_PURGELINEEND=628
/* End serial input Abort
 *
 * Data1
 * Data2
 * Data3
 * IOString
 *
 * No Data needed.
 */

CONST SR_BBSORIGIN=629
/* Retrieve the BBS Origin
 *
 * Data1
 * Data2
 * Data3
 * IOString -> Contains the BBS Origin.
 */

CONST SR_DEFNUMLINES=630
/* Retrieve the default text number of lines
 *
 * Data1
 * Data2    -> Contains the default text number of lines.
 * Data3
 * IOString
 */

CONST SR_NUMBEROFNODES=631
/* Retrieve the number of Nodes
 *
 * Data1
 * Data2    -> Contains the number of Nodes.
 * Data3
 * IOString
 */

CONST SR_FILEDESCUNDLINE=632
/* Retrieve the File Decsription underline
 *
 * Data1
 * Data2
 * Data3
 * IOString -> Contains the Decsription underline.
 */

CONST SR_NUMBEROFCONFS=633
/* Retrieve the number of Conferences
 *
 * Data1
 * Data2    -> Contains the number of Conferences.
 * Data3
 * IOString
 */

CONST SR_CONFNAMELOC=634
/* Retrieve the conference name and conference location
 *
 * Data1    <- The conference number.
 * Data2
 * Data3
 * IOString -> The requested conferencename.
 * StringPtr -> The requested conferencelocation.
 * StructDummy1 -> The requested conferencename.
 * StructDummy2 -> The requested conferencelocation.
 *
 * Note: If Data1 is lower than 1 or higher than the last conference
 *       available, Data1 will be set to the current conference number!
 *
 * Note: You have to allocate memory for StructDummy1 and StructDummy2.
 *       For conferencename (StructDummy1) you need 32 bytes and for
 *       conferencelocation (StructDummy2) you need 102 bytes of memory
 *       (zero-bytes are already included).
 *       The easyest way to do this is if you have two strings long enough
 *       to which you can let point StructDummy1 and StructDummy1 before
 *       you call this command. If you don't do this, you damage foreign
 *       memory and this will normaly cause a guru.
 */

CONST SR_FAMEDATAFILEVERS=635
/* Retrieve the current Datafile version string of FAME
 *
 * Data1
 * Data2    -> Contains the versionnumber used to check for fileheaders.
 * Data3    -> Contains the revsionnumber used to check for fileheaders.
 * IOString -> Contains the Datafile version string of FAME.
 */

CONST SR_CONNECTSTRING=636
/* Retrieve the current users connect string
 *
 * Data1
 * Data2
 * Data3
 * IOString -> Contains the connect string.
 */

/*   ------------------------- SC commands --------------------------------
 */

CONST SC_UNUSED1=700

CONST SC_UNUSED2=701

CONST SC_CHATSET=702
/* Change the chat status
 *
 * Data1    <- 0 means no chat, else chat.
 * Data2
 * Data3
 * IOString
 */

CONST SC_ENVSTAT=703
/* Change the current env stat variable code
 *
 * Data1    <- the new env stat variable code.
 * Data2
 * Data3
 * IOString
 */

CONST SC_NONSTOPTEXT=704
/* Change the NONSTOP text scrolling flag
 *
 * Data1    <- 0 means no NONSTOP text, else NONSTOP text.
 * Data2
 * Data3
 * IOString
 */

CONST SC_DEFNUMLINES=705
/* Change the default text number of lines
 *
 * Data1    <- The new default text number of lines.
 * Data2
 * Data3
 * IOString
 */

CONST SC_FILEDESCUNDLINE=706
/* Change the File Decsription underline
 *
 * Data1
 * Data2
 * Data3
 * IOString <- The new File Decsription underline (max. 45 chars).
 */

CONST SC_GOODFILE=707
/* Set the results of a tested file after upload
 *
 * Data1    <- The new filestatus.
 * Data2
 * Data3
 * IOString
 *
 * -1 means the file failed the filetest.
 *  0 means the file passed the filetest.
 *  1 means the file was not tested.
 */


/*   ------------------------- AR commands --------------------------------
 */

CONST AR_GETKEY=800
/* Look for a keypress without waiting for it
 *
 * Data1
 * Data2    -> 0 means nothing happens, 1 means a key was pressed!
 * Data3
 * IOString
 *
 * Note: AR_GetKey is the same as NR_HotKey, but on NR_HotKey you will
 *       get the char, while AR_GetKey notifies only that a char was
 *       present. Usable for a simple "Press a key" prompt.
 */

CONST AR_WAITRAWCHAR=801
/* Get a char with waiting for it, also get ALL REAL RAW commands!
 *
 * Data1
 * Data2    -> The char typed be the user.
 * Data3
 * IOString <- String will be displayed to the user.
 *
 * Note: U have to check your self if the Rawkeycode is a FKey/Shift-FKey
 *       or the Helpkey. If such a key appears, you have to use the next
 *       command: AR_EmulateFKeyHelp
 */

CONST AR_EMULATEFKEYHELP=802
/* Emulates a pressed FKey/Shift-FKey/Help on Con
 *
 * Data1    <- Thy keytype.
 * Data2
 * Data3
 * IOString
 *
 * Note: Data1 can have the following values:
 *       1-10 means F1-F10, 11-20 means ShiftF1-ShiftF10, 21 means Help.
 *
 * Note: If ReturnCode is 1, the node is iconified and this command
 *       won't be executed. This is because of more security, because
 *       it's only an emulation of keys pressed by the SysOp and not for
 *       other things.
 */

CONST AR_GETCHARHEX=803
/* Retrieve the Char pressed in HEX  !NOT IMPLEMENTED YET!
 *
 * Data1
 * Data2
 * Data3
 * IOString
 */

CONST AR_EDITFILE=804
/* Edit every File with the internal Texteditor
 *
 * Data1
 * Data2
 * Data3
 * IOString <- The file to be edit.
 */

CONST AR_DUMP=805
/* dump the user's data structure to a specified file
 *
 * Data1
 * Data2
 * Data3
 * IOString <- The file where the user data structure should be generated.
 */

CONST AR_USERSTATUS=806
/* Retrieve the Userstatus (Aktiv/Deleted/InAktive)
 *
 * Data1
 * Data2    -> The user status flag.
 * Data3
 * IOString
 */

CONST AR_NEWSCAN=807
/* Retrieve the NewScan Flag
 *
 * Data1    <- The conferencenumber from which u want to get the NewScan flag.
 * Data2    -> 1 if NewScan is on, 0 if off.
 * Data3
 * IOString
 *
 * Note: If Data1 is lower than 1 or higher than the last conference
 *       available, Data1 will be set to the current conference number!
 */

CONST AR_HACKS=808
/* Retrieve the Hackattemps
 *
 * Data1
 * Data2    -> Contains the User's number of hacks.
 * Data3
 * IOString
 */

CONST AR_LASTCONF=809
/* Retrieve the Last Conf which was joined
 *
 * Data1
 * Data2
 * Data3    -> Contains the User's last conference on.
 * IOString
 */

CONST AR_CONFREJOIN=810
/* Retrieve the Conf which should every time be joined on logon
 *
 * Data1
 * Data2
 * Data3    -> Contains the User's number of confjoins.
 * IOString
 */

CONST AR_HIGHUPCPS=811
/* Retrieve the highest CPS on Uploads
 *
 * Data1
 * Data2    -> Contains the User's highest CPS on Uploads.
 * Data3
 * IOString
 */

CONST AR_HIGHDOWNCPS=812
/* Retrieve the highest CPS on Downloads
 *
 * Data1
 * Data2    -> Contains the User's highest CPS on Downloads.
 * Data3
 * IOString
 */

CONST AR_BAUD=813
/* Retrieve the Baudrate at the last Logon
 *
 * Data1
 * Data2    -> Contains the User's Baudrate at the last Logon.
 * Data3
 * IOString
 */

CONST AR_MSGCLS=814
/* Retrieve the ClearScreen on Msg's flag
 *
 * Data1
 * Data2    -> Contains the User's ClearScreen on Msg's flag.
 * Data3
 * IOString
 */

CONST AR_FILECLS=815
/* Retrieve the ClearScreen on Filelists flag
 *
 * Data1
 * Data2    -> Contains the User's ClearScreen on Filelists flag.
 * Data3
 * IOString
 */

CONST AR_UGLOBAL=816
/* Retrieve the global upload flag
 *
 * Data1
 * Data2    -> Contains the User's global upload flag.
 * Data3
 * IOString
 */

CONST AR_DGLOBAL=817
/* Retrieve the global download flag
 *
 * Data1
 * Data2    -> Contains the User's global download flag.
 * Data3
 * IOString
 */

CONST AR_FILEBASE=818
/* Retrieve the access to the User File Base
 *
 * Data1
 * Data2    -> Contains the User's access to the User File Base.
 * Data3
 * IOString
 */

CONST AR_HIDE=819
/* Retrieve the hide flag
 *
 * Data1
 * Data2    -> Contains the User's hide flag.
 * Data3
 * IOString
 */

CONST AR_MSGROOMING=820
/* Retrieve the Msgrooming flag
 *
 * Data1
 * Data2    -> Contains the User's Msgrooming flag.
 * Data3
 * IOString
 */

CONST AR_STRINGEDIT=821
/* Retrieve the StringEdit flag
 *
 * Data1
 * Data2    -> Contains the User's StringEdit flag.
 * Data3
 * IOString
 */

CONST AR_CRYPTPW=822
/* Retrieve the CryptPW
 *
 * Data1
 * Data2
 * Data3
 * IOString -> Contains the User's CryptPW.
 */

CONST AR_CRYPTFLAG=823
/* Retrieve the CryptFlag
 *
 * Data1
 * Data2    -> Contains the User's Crypt flag.
 * Data3
 * IOString
 */

CONST AR_USERFILEBPW=824
/* Retrieve the UserFileBasePW
 *
 * Data1
 * Data2
 * Data3
 * IOString -> Contains the User's UserFileBasePW.
 */

CONST AR_DROPDTR=825
/* Drop carrier on a user
 *
 * Data1
 * Data2
 * Data3
 * IOString
 *
 * No data needed.
 */

CONST AR_USERLIMIT=826
/* Retrieve the Userlimit
 *
 * Data1
 * Data2    -> Contains the BBS Userlimit.
 * Data3
 * IOString
 */

CONST AR_MAXNAMEFAILURE=827
/* Retrieve the MaxNameFailure
 *
 * Data1
 * Data2    -> Contains the BBS MaxNameFailure.
 * Data3
 * IOString
 */

CONST AR_MAXUSERPWFAIL=828
/* Retrieve the MaxUserPWFail
 *
 * Data1
 * Data2    -> Contains the BBS MaxUserPWFail.
 * Data3
 * IOString
 */

CONST AR_MAXSYSPWFAILURE=829
/* Retrieve the MaxSysPWFailure
 *
 * Data1
 * Data2    -> Contains the BBS MaxSysPWFailure.
 * Data3
 * IOString
 */

CONST AR_MAXNUPFAILURE=830
/* Retrieve the MaxNUPFailure
 *
 * Data1
 * Data2    -> Contains the BBS MaxNUPFailure.
 * Data3
 * IOString
 */

CONST AR_MAXUSERHACKS=831
/* Retrieve the MaxUserHacks
 *
 * Data1
 * Data2    -> Contains the BBS MaxUserHacks.
 * Data3
 * IOString
 */

CONST AR_SCREENSPATH=832
/* Retrieve the ScreensPath
 *
 * Data1
 * Data2
 * Data3
 * IOString -> Contains the BBS ScreensPath.
 */

CONST AR_SYSPWPROMPT=833
/* Retrieve the SysPWPrompt
 *
 * Data1
 * Data2
 * Data3
 * IOString -> Contains the BBS SysPWPrompt.
 */

CONST AR_NEWUSERPWPROMPT=834
/* Retrieve the NewUserPWPrompt
 *
 * Data1
 * Data2
 * Data3
 * IOString -> Contains the BBS NewUserPWPrompt.
 */

CONST AR_USERNAMEPROMPT=835
/* Retrieve the UserNamePrompt
 *
 * Data1
 * Data2
 * Data3
 * IOString -> Contains the BBS UserNamePrompt.
 */

CONST AR_USERPWPROMPT=836
/* Retrieve the UserPWPrompt
 *
 * Data1
 * Data2
 * Data3
 * IOString -> Contains the BBS UserPWPrompt.
 */

CONST AR_PAUSEPROMPT=837
/* Retrieve the PausePrompt
 *
 * Data1
 * Data2
 * Data3
 * IOString -> Contains the BBS PausePrompt.
 */

CONST AR_SYSOPCHATCOLOR=838
/* Retrieve the SysOpChatColor
 *
 * Data1
 * Data2
 * Data3
 * IOString -> Contains the BBS SysOpChatColor.
 */

CONST AR_USERCHATCOLOR=839
/* Retrieve the UserChatColor
 *
 * Data1
 * Data2
 * Data3
 * IOString -> Contains the BBS UserChatColor.
 */

CONST AR_UPLOADPATHI=840
/* Retrieve the UploadPathI
 *
 * Data1
 * Data2
 * Data3
 * IOString -> Contains the UploadPathI of the actual conference.
 */

CONST AR_DOWNLOADPATHI=841
/* Retrieve the DownloadPathI
 *
 * Data1
 * Data2
 * Data3
 * IOString -> Contains the DownloadPathI of the actual conference.
 */

CONST AR_ADDITIOULPATHES=842
/* Retrieve the AdditioUlPathes
 *
 * Data1
 * Data2
 * Data3
 * IOString -> Contains the AdditioUlPathes of the actual conference.
 */

CONST AR_ADDITIODLPATHES=843
/* Retrieve the AdditioDlPathes
 *
 * Data1
 * Data2
 * Data3
 * IOString -> Contains the AdditioDlPathes of the actual conference.
 */

CONST AR_NUMBEROFDIRS=844
/* Retrieve the NumberofDirs
 *
 * Data1    <- The conference number.
 * Data2    -> Contains the number of dirs of the actual conference.
 * Data3
 * IOString
 *
 * Note: If Data1 is lower than 1 or higher than the last conference
 *       available, Data1 will be set to the current conference number!
 */

CONST AR_GIVEULBYTES=845
/* Retrieve the GiveUlBytes
 *
 * Data1
 * Data2    -> Contains the number of Ul bytes given of the actual conference.
 * Data3
 * IOString
 */

CONST AR_GIVEDLBYTES=846
/* Retrieve the GiveDlBytes
 *
 * Data1
 * Data2    -> Contains the number of Ul bytes given of the actual conference.
 * Data3
 * IOString
 */

CONST AR_FLAGFILEPATH=847
/* Add a file on a Conffileflaglist with or without path
 *
 * Data1    <- The conference number.
 * Data2    <- FreeDl Flag. If non 0 it will be a FreeDownloadfile.
 * Data3    -> Errormsg 0 on success.
 * IOString <- The Filename
 * StringPtr <- The Path for the file, "" if no path is known and the BBS
 *              should find a path for the file.
 *
 * Note: U can flag here also filenames longer than 12 chars.
 *       Filenames can be long up to 31 chars.
 *       The Filepath can be long up to 101 chars.
 *
 * Note: If Data1 is lower than 1 or higher than the last conference
 *       available, Data1 will be set to the current conference number!
 *
 * Note: Data3 is errormsg:
 *       0  means successfull flagged.
 *       1  means file allready flagged.
 *       2  means length of IOString is lower than  byte.
 *       -1 means list element memory allocation faild.
 *       -2 means given conference not found, normaly not happens here,
 *                because of Data1 check.
 */

CONST AR_STRINGTONODE=848
/* Send a Textstring to a Node (dependent of users settings "W 18")
 *
 * Data1    <- The Node to which the String should go.
 * Data2
 * Data3
 * IOString <- The String displayed at the Node.
 *
 * Note: If ReturnCode=1 the String can't be send to this Node,
 *       because this Node doesn't exists.
 *       Use NR_ActiveNode to check if the Node exists.
 *       AR_StringToNode dependent of users settings "W 18", that means
 *       only on some positions in the Node the Message can be directly
 *       received. If the User don't want to get Messages at some actions
 *       in the BBS, the Message will be added to a list which will be
 *       displayed to the User when he comes to a position where he will or
 *       must receive the messages. Every user *MUST* receive them on idle
 *       mode (Menuprompt).
 */

CONST AR_GETNODEENV=849
/* Retrieve the status of a Node
 *
 * Data1    <- The Node u mean.
 * Data2    -> The status of the Node. Use this one to get a real result!
 * Data3    -> The full last Node to Server Command, better u doesn't use it!
 * IOString -> The Actionstring displayed at the Server.
 */

CONST AR_FULLEDSTRUCT=850
/* Retrieve the (filled) struct for external MsgEd
 *
 * Data1
 * Data2
 * Data3
 * IOString
 * StructDummy1 -> Pointer to struct ExternEditor.
 */

CONST AR_SENDSTR=851
/* Sends a non length limited String to the User
 *
 * Data1    <- if not 0 a "\r\n" combination will be send after the string
 *             has been send.
 * Data2
 * Data3
 * IOString
 * StringPtr <- The string to be send to the user.
 */

CONST AR_SENDSTRCON=852
/* Sends a non length limited String to the Console only
 *
 * Data1    <- if not 0 a "\r\n" combination will be send after the string
 *             has been send.
 * Data2
 * Data3
 * IOString
 * StringPtr <- The string to be send to the console.
 */

CONST AR_SENDSTRSER=853
/* Sends a non length limited String to the Serial only
 *
 * Data1    <- if not 0 a "\r\n" combination will be send after the string
 *             has been send.
 * Data2
 * Data3
 * IOString
 * StringPtr <- The string to be send to the serial.
 */

CONST AR_RESETNUMFLAGS=854
/* Reset NumFlagList
 *
 * Data1
 * Data2
 * Data3   -> Returncode.
 * IOString
 *
 * Note: Data3 must be true or an internal error has been detected.
 *       In this case you musn't use AR_SetNumFlag and AR_GetNumFlag!!!
 */

CONST AR_SETNUMFLAG=855
/* Flag an entry into the NumFlagList
 *
 * Data1    <- The number of the new entry. It's on you to count it correctly!
 * Data2
 * Data3    -> Returncode.
 * IOString <- The entry (FileName).
 *
 * Note: Data3 is the following returncode:
 *        0 means success.
 *       -1 means allocation failed.
 *       -2 means Base not initialized.
 */

CONST AR_GETNUMFLAG=856
/* Get an entry from the NumFlagList
 *
 * Data1    <- The number of the entry you want to have.
 * Data2
 * Data3    -> Returncode.
 * IOString -> The entry (FileName).
 *
 * Note: Data3 is the following returncode:
 *        0 means success.
 *       -1 means entry number not found.
 *       -2 means Base not initialized.
 */

CONST AR_NODEVERSION=857
/* Get the version and revision numbers of a specific Node.
 *
 * Data1    <- The Node number
 * Data2    -> The version of this Node.
 * Data3    -> The revision of this Node.
 * IOString
 */

CONST AR_NODESTARTTIME=858
/* Get the start time of a specific Node.
 *
 * Data1    <- The Node number
 * Data2    -> The start time/date (unix) of this Node.
 * Data3
 * IOString -> The start time/date (string) of this Node.
 */

CONST AR_SERVERVERSION=859
/* Get the version and revision numbers of the Server.
 *
 * Data1
 * Data2    -> The version of the Server.
 * Data3    -> The revision of the Server.
 * IOString
 */

CONST AR_SERVERSTARTTIME=860
/* Get the start time of the Server.
 *
 * Data1
 * Data2    -> The start time/date (unix) of the Server.
 * Data3
 * IOString -> The start time/date (string) of the Server.
 */


/*   ------------------------- AC commands --------------------------------
 */

CONST AC_USERSTATUS=900
/* Cange the Userstatus (Aktiv/Deleted/InAktive)
 *
 * Data1    <- The new Userstatus.
 * Data2
 * Data3
 * IOString
 */

CONST AC_NEWSCAN=901
/* Change the NewScan Flag
 *
 * Data1    <- The conferencenumber from which u want to get the NewScan flag.
 * Data2    <- 1 if NewScan should be set to on, 0 for off.
 * Data2
 * Data3
 * IOString
 */

CONST AC_HACKCOUNT=902
/* Resets the Hackcounter
 *
 * Data1    <- The new hackcounter.
 * Data2
 * Data3
 * IOString
 */

CONST AC_LASTCONF=903
/* Change the Last Conf which was joined
 *
 * Data1
 * Data2
 * Data3    <- The new last conf joined.
 * IOString
 */

CONST AC_CONFREJOIN=904
/* Change the Conf which should every time be joined on logon
 *
 * Data1
 * Data2
 * Data3    <- The new last conf which should every time be joined on logon.
 * IOString
 */

CONST AC_HIGHUPCPS=905
/* Change the highest CPS on Uploads
 *
 * Data1    <- The new highest CPS on Uploads.
 * Data2
 * Data3
 * IOString
 */

CONST AC_HIGHDOWNCPS=906
/* Change the highest CPS on Downloads
 *
 * Data1    <- The new highest CPS on Downloads.
 * Data2
 * Data3
 * IOString
 */

CONST AC_BAUD=907
/* Change the Baudrate at the last Logon
 *
 * Data1    <- The new Baudrate at the last Logon.
 * Data2
 * Data3
 * IOString
 */

CONST AC_MSGCLS=908
/* Change the ClearScreen on Msg's flag
 *
 * Data1    <- The new ClearScreen on Msg's flag.
 * Data2
 * Data3
 * IOString
 */

CONST AC_FILECLS=909
/* Change the ClearScreen on Filelists flag
 *
 * Data1    <- The new ClearScreen on Filelists flag.
 * Data2
 * Data3
 * IOString
 */

CONST AC_UGLOBAL=910
/* Change the global upload flag
 *
 * Data1    <- The new global upload flag.
 * Data2
 * Data3
 * IOString
 */

CONST AC_DGLOBAL=911
/* Change the global download flag
 *
 * Data1    <- The new global download flag.
 * Data2
 * Data3
 * IOString
 */

CONST AC_FILEBASE=912
/* Change the access to the User File Base
 *
 * Data1    <- The new access to the User File Base.
 * Data2
 * Data3
 * IOString
 */

CONST AC_HIDE=913
/* Change the hide flag
 *
 * Data1    <- The new hide flag.
 * Data2
 * Data3
 * IOString
 */

CONST AC_MSGROOMING=914
/* Change the Msgrooming flag
 *
 * Data1    <- The new Msgrooming flag.
 * Data2
 * Data3
 * IOString
 */

CONST AC_STRINGEDIT=915
/* Change the StringEdit flag
 *
 * Data1    <- The new StringEdit flag.
 * Data2
 * Data3
 * IOString
 */

CONST AC_CRYPTPW=916
/* Change the CryptPW
 *
 * Data1
 * Data2
 * Data3
 * IOString <- The new CryptPW (max 11 chars).
 */

CONST AC_CRYPTFLAG=917
/* Change the CryptFlag
 *
 * Data1    <- The new CryptFlag.
 * Data2
 * Data3
 * IOString
 */

CONST AC_USERFILEBPW=918
/* Change the UserFileBasePW
 *
 * Data1
 * Data2
 * Data3
 * IOString <- The new UserFileBasePW.
 */

CONST AC_USERLIMIT=919
/* Change the Userlimit
 *
 * Data1    <- The new BBS Userlimit.
 * Data2
 * Data3
 * IOString
 */

CONST AC_MAXNAMEFAILURE=920
/* Change the MaxNameFailure
 *
 * Data1    <- The new BBS MaxNameFailure.
 * Data2
 * Data3
 * IOString
 */

CONST AC_MAXUSERPWFAIL=921
/* Change the MaxSysPWFailure
 *
 * Data1    <- The new BBS MaxSysPWFailure.
 * Data2
 * Data3
 * IOString
 */

CONST AC_MAXSYSPWFAILURE=922
/* Change the MaxNUPFailure
 *
 * Data1    <- The new BBS MaxNUPFailure.
 * Data2
 * Data3
 * IOString
 */

CONST AC_MAXNUPFAILURE=923
/* Change the MaxNUPFailure
 *
 * Data1    <- The new BBS MaxNUPFailure.
 * Data2
 * Data3
 * IOString
 */

CONST AC_MAXUSERHACKS=924
/* Change the MaxUserHacks
 *
 * Data1    <- The new BBS MaxUserHacks.
 * Data2
 * Data3
 * IOString
 */

CONST AC_SCREENSPATH=925
/* Change the ScreensPath
 *
 * Data1
 * Data2
 * Data3
 * IOString <- The new BBS ScreensPath.
 */

CONST AC_SYSPWPROMPT=926
/* Change the SysPWPrompt
 *
 * Data1
 * Data2
 * Data3
 * IOString <- The new BBS SysPWPrompt.
 */

CONST AC_NEWUSERPWPROMPT=927
/* Change the NewUserPWPrompt
 *
 * Data1
 * Data2
 * Data3
 * IOString <- The new BBS NewUserPWPrompt.
 */

CONST AC_USERNAMEPROMPT=928
/* Change the UserNamePrompt
 *
 * Data1
 * Data2
 * Data3
 * IOString <- The new BBS UserNamePrompt.
 */

CONST AC_USERPWPROMPT=929
/* Change the UserPWPrompt
 *
 * Data1
 * Data2
 * Data3
 * IOString <- The new BBS UserPWPrompt.
 */

CONST AC_PAUSEPROMPT=930
/* Change the PausePrompt
 *
 * Data1
 * Data2
 * Data3
 * IOString <- The new BBS PausePrompt.
 */

CONST AC_SYSOPCHATCOLOR=931
/* Change the SysOpChatColor
 *
 * Data1
 * Data2
 * Data3
 * IOString <- The new BBS SysOpChatColor.
 */

CONST AC_USERCHATCOLOR=932
/* Change the UserChatColor
 *
 * Data1
 * Data2
 * Data3
 * IOString <- The new BBS UserChatColor.
 */

CONST AC_NUMBEROFDIRS=933
/* Change the NumberofDirs
 *
 * Data1    <- The new BBS NumberofDirs.
 * Data2
 * Data3
 * IOString
 */

CONST AC_GIVEULBYTES=934
/* Change the GiveUlBytes
 *
 * Data1    <- The new BBS givven Ul bytes.
 * Data2
 * Data3
 * IOString
 */

CONST AC_GIVEDLBYTES=935
/* Change the GiveDlBytes
 *
 * Data1    <- The new BBS given Dl bytes.
 * Data2
 * Data3
 * IOString
 */

CONST AC_SERVERACTION=936
/* Write action string to the server nodeline.
 *
 * Data1
 * Data2
 * Data3
 * IOString <- The string to the server.
 */

CONST AC_SERVERACTIONCPS=937
/* Write action string and Baud/CPS to the server nodeline.
 *
 * Data1    <- The Baud/CPS to the server.
 * Data2
 * Data3
 * IOString <- The string to the server.
 */


/*   ------------------------- RD commands --------------------------------
 */

CONST RD_SHOWFLAGS=1000
/* Shows the Flaglist of the current Conf  !NOT IMPLEMENTED YET!
 *
 * Data1
 * Data2
 * Data3
 * IOString
 */

CONST RD_SHOWALLFLAGS=1001
/* Shows the Flaglists of all Conf's  !NOT IMPLEMENTED YET!
 *
 * Data1
 * Data2
 * Data3
 * IOString
 */

CONST RD_CONFIGLOAD=1002
/* Reload all Configdatas  !NOT IMPLEMENTED YET!
 *
 * Data1
 * Data2
 * Data3
 * IOString
 */

CONST RD_ICONIFYIS=1003
/* Retrieve Iconify Status
 *
 * Data1
 * Data2    -> The iconify status flag.
 * Data3
 * IOString
 */

CONST RD_ICONIFY=1004
/* Change to Iconify or UnIconify
 *
 * Data1
 * Data2
 * Data3
 * IOString
 *
 * No datas needed, because this only toggles.
 */

CONST RD_SPY=1005
/* Retrieve or toggles the Spy flag  !NOT IMPLEMENTED YET!
 *
 * Data1
 * Data2
 * Data3
 * IOString
 */

CONST RD_NEWUSER=1006
/* Retrieve or toggles the NewUser flag
 *
 * Data1    <- On 0 retrieve, else set the NewUser flag.
 * Data2    -> If Data1=0 the NewUser flag.
 * Data3    <- If Data1=1 the new NewUser flag.
 * IOString
 */

CONST RD_LOADACCOUNT=1007
/* Load Userdatas
 *
 * Data1    <- The Usernumber of the User u want to load.
 * Data2
 * Data3
 * IOString
 * StructDummy1 -> The Userdata structure.
 * StructDummy2 -> The Userkey structure.
 */

CONST RD_SAVEACCOUNT=1008
/* Write Userdatas back
 *
 * Data1    <- The Usernumber of the User u want to save.
 * Data2
 * Data3
 * IOString
 * StructDummy1 <- The Userdata structure.
 * StructDummy2 <- The Userkey structure.
 */

CONST RD_LOADCONFDAT=1009
/* Write UserCnf.data back
 *
 * Data1    <- The Usernumber of the User from whom u want to load the aktual
 *             conf's Userconfdata structure.
 * Data2    <- The selected conference.
 * Data3
 * IOString
 * StructDummy1 -> The Userconfdata structure.
 *
 * Note: If Data2 is lower than 1 or higher than the last conference
 *       available, Data2 will be set to the current conference number!
 */

CONST RD_SAVECONFDAT=1010
/* Load UserCnf.data
 *
 * Data1    <- The Usernumber of the User to whom u want to save the aktual
 *             conf's Userconfdata structure.
 * Data2    <- The selected conference.
 * Data3
 * IOString
 * StructDummy1 <- The Userconfdata structure.
 *
 * Note: If Data2 is lower than 1 or higher than the last conference
 *       available, Data2 will be set to the current conference number!
 */

CONST RD_APPENDACCOUNT=1011
/* Add a new Account
 *
 * Data1
 * Data2
 * Data3
 * IOString
 * StructDummy1 <- The filled Userdata structure.
 * StructDummy2 <- The filled Userkey structure.
 *
 * Note: The Userconfdata structures will be generated automaticly and set to
 *       default values.
 */

CONST RD_DOONMAXUSERHACK=1012
/* Not used now
 *
 * Data1
 * Data2
 * Data3
 * IOString
 */

CONST RD_SERVERCOMMAND=1013
/* Send ACP command
 *
 * Data1    <- Data1 of the Server Msg.
 * Data2    <- Data2 of the Server Msg.
 * Data3
 * IOString <- String (if needed) for a command.
 */

CONST RD_GETMCIFLAG=1014
/* Retrieve the MCI Flag  !NOT IMPLEMENTED YET!
 *
 * Data1
 * Data2
 * Data3
 * IOString
 */

CONST RD_MCIFLAG=1015
/* Change the MCI Flag  !NOT IMPLEMENTED YET!
 *
 * Data1
 * Data2
 * Data3
 * IOString
 */

CONST RD_LOADACCOUNTMISC=1016
/* Load Miscdatas
 *
 * Data1    <- The Usernumber of the User u want to load.
 * Data2    <- The selected conference.
 * Data3
 * IOString
 * StructDummy1 -> The Userdata structure.
 * StructDummy2 -> The Userdata structure.
 * StructDummy3 -> The Userconfdata structure.
 *
 * Note: If Data2 is lower than 1 or higher than the last conference
 *       available, Data2 will be set to the current conference number!
 */

CONST RD_SAVEACCOUNTMISC=1017
/* Write Miscdatas back
 *
 * Data1    <- The Usernumber of the User u want to save.
 * Data2    <- The selected conference.
 * Data3
 * IOString
 * StructDummy1 <- The Userdata structure.
 * StructDummy2 <- The Userdata structure.
 * StructDummy3 <- The Userconfdata structure.
 *
 * Note: If Data2 is lower than 1 or higher than the last conference
 *       available, Data2 will be set to the current conference number!
 */

CONST RD_ASLLOCALULPATH=1018
/* Retrieve or change ASLLocalUlPath
 *
 * Data1    <- 0 means retrieve, else change ASLLocalUlPath.
 * Data2
 * Data3
 * IOString <-> If Data1=0 it contains ASLLocalUlPath,
 *              else this will be the new one (max 21 chars).
 */

CONST RD_ASLTEXTVIEWPATH=1019
/* Retrieve or change ASLTextViewPath
 *
 * Data1    <- 0 means retrieve, else change ASLTextViewPath.
 * Data2
 * Data3
 * IOString <-> If Data1=0 it contains ASLTextViewPath,
 *              else this will be the new one (max 21 chars).
 */

CONST RD_ASLSENDFILEPATH=1020
/* Retrieve or change ASLSendFilePath
 *
 * Data1    <- 0 means retrieve, else change ASLSendFilePath.
 * Data2
 * Data3
 * IOString <-> If Data1=0 it contains ASLSendFilePath,
 *              else this will be the new one (max 21 chars).
 */

CONST RD_STARTNODECMD=1021
/* Start a command (Menu/Door) at another Node
 *
 * Data1    <- The Node u mean.
 * Data2
 * Data3
 * IOString <- The command incl. Arguments.
 */

CONST RD_BEADOORONNODE=1022
/* Let u be a Door of another Node. This means in detail, this command
 * emulates on the given Node that u are a Door started on this Node.
 * The Node opens, if not exists, the own FAMEDoorPort(x).
 * Now u can access this port like a normal Door (which you already are)
 * like as you has been started from there. This also means you *HAVE*
 * to use the Mustcommands: MC_DoorStart and MC_ShutDown !!!
 *
 * Data1    <- The Node u mean.
 * Data2
 * Data3
 * IOString <- Arguments given on doorstart (only a joke 8)...but true!)
 */

CONST RD_OPENDOORPORT=1023
/* Opens a DoorPort an a Node
 *
 * Data1    <- The Node u mean.
 * Data2    <- The DoorPorttype.
 * Data3
 * IOString
 *
 * DoorPorttype: 0 FIM, 1 XIM, 2 TIM.
 */

CONST RD_CLOSEDOORPORT=1024
/* Closes a DoorPort an a Node
 *
 * Data1    <- The Node u mean.
 * Data2    <- The DoorPorttype.
 * Data3
 * IOString
 *
 * DoorPorttype: 0 FIM, 1 XIM, 2 TIM.
 */

CONST RD_GETSERVERLIST=1025
/* Get the internal Serverliststamm
 *
 * Data1
 * Data2
 * Data3
 * IOString
 * StructDummy1 -> The internal Serverliststamm (struct NodeListStamm).
 */

CONST RD_STRINGTONODE=1026
/* Send a Textstring to a Node
 *
 * Data1    <- The Node to which the String should go.
 * Data2
 * Data3
 * IOString <- The String displayed at the Node.
 *
 * Note: If ReturnCode=1 the String can't be send to this Node.
 *       Maybe the Node doesn't exists.
 *       Use NR_ActiveNode to check if the Node exists and AR_GetNodeEnv
 *       to retrieve the status of the node. The best way is to use the
 *       internal ServerNodelist.
 *       This String appears on every position/action on the Node.
 *
 */

CONST RD_STRINGTONODES=1027
/* Send a Textstring to a list of Nodes
 *
 * Data1
 * Data2
 * Data3
 * IOString <- The String displayed at the Nodes.
 * StructDummy1 <- The list of Nodes from type struct FAMEDestNodes.
 *
 * Note: Use NR_ActiveNode to check if the Nodes exist and AR_GetNodeEnv
 *       to retrieve the status of the nodes. The best way is to use the
 *       internal ServerNodelist.
 *       This String appears on every position/action on the Node.
 *
 */

CONST RD_CONSTATUS=1028
/* Get or set the CON Output flag
 *
 * Data1    <- 1 means set, else get.
 * Data2    <-> On Data1 you set this value, else u will get it.
 * Data3
 * IOString
 */

CONST RD_SERSTATUS=1029
/* Get or set the SER Output flag
 *
 * Data1    <- 1 means set, else get.
 * Data2    <-> On Data1 you set this value, else u will get it.
 * Data3
 * IOString
 */

CONST RD_SAVEMSGFILE=1030
/* Save a Msg from
 *
 * Data1    <- Post to Conference.
 * Data2    -> Result.
 * Data3
 * IOString <- File and path.
 * StructDummy1 <- Allocated and filled struct MailHeader
 *
 * Results are: 0 = Successfull.
 *              1 = Your given file doesn't exists.
 *              2 = Can't get conference datas from your given conf number.
 *              3 = MsgBase lock failed.
 *              4 = MsgStatus.dat can't be opened.
 *              5 = MsgHeader.dat can't be opened.
 *              6 = Filecopy of message failed.
 *              7 = Your struct MailHeader isn't valid.
 */

CONST RD_SAVEMSGLIST=1031
/*
 *
 * Data1    <- Post to Conference.
 * Data2
 * Data3
 * IOString
 * StructDummy1 <- Filled struct ExternEditor.
 *
 * Note: Get the pointer to struct ExternEditor with AR_FullEdStruct!
 *       Also call RD_FreeMsgList before AR_FullEdStruct and get sure that
 *       no msg is on writing on the node till you use this!!!
 */

CONST RD_FREEMSGLISTFED=1032
/*
 *
 * Data1
 * Data2
 * Data3
 * IOString
 *
 * Note: Free the Internal Msglist. No data needed.
 */

CONST RD_ACTASLULPATH=1033
/* Retrieve or change Actual ASL Upload Path
 *
 * Data1    <- 0 means retrieve, else change ActASLULPath.
 * Data2
 * Data3
 * IOString <-> If Data1=0 it contains ActASLULPath,
 *              else this will be the new one (max 100 chars).
 */

CONST RD_ACTASLTEXTVIEWP=1034
/* Retrieve or change Actual ASL TextView Path
 *
 * Data1    <- 0 means retrieve, else change ActASLTextViewPath.
 * Data2
 * Data3
 * IOString <-> If Data1=0 it contains ActASLTextViewPath,
 *              else this will be the new one (max 100 chars).
 */

CONST RD_ACTASLDLPATH=1035
/* Retrieve or change Actual ASL Download Path
 *
 * Data1    <- 0 means retrieve, else change ActASLDlPath.
 * Data2
 * Data3
 * IOString <-> If Data1=0 it contains ActASLDlPath,
 *              else this will be the new one (max 100 chars).
 */

CONST RD_NODESCRTOFRONT=1036
/* Brings Node Screen to Front
 *
 * Data1
 * Data2
 * Data3
 * IOString
 *
 * No datas needed.
 * If the screen is iconified, it will be uniconified.
 */

CONST RD_SETSERVERACTCOL=1037
/* Change display colour at the Serveraction
 *
 * Data1    <- Colour
 * Data2    <- Node
 * Data3
 * IOString
 */

CONST RD_INITNUMFLAG=1038
/* Initialize your own NumFlagList
 *
 * Data1
 * Data2
 * Data3
 * IOString
 * StructDummy1 <- Your own not initilized struct NumFlagList NumFlagListBase
 *                 pointer.
 *
 * Note: Don't forget to set your NumFlagListBase=NULL;
 *
 * Note: If StructDummy1 is FALSE an internal error has been detected.
 *       In this case you musn't use RD_RemoveNumFlag, RD_ResetNumFlags,
 *       RD_SetNumFlag and RD_GetNumFlag!!!
 *
 * Here now the struct NumFlagList:
 *
 * struct NumFlagList {
 * struct NumFlagList *Next,
 *                    *Prev;
 * char               FileName[102];
 * long               FileNumber;
 * };
 *
 * Note: You can have as many NumFlagListBases as you want to!
 *       There is no limit on FAME side.
 *       Your only thing to do is to take another NumFlagListBase
 *       like here:
 *
 *       struct NumFlagList *NumFlagListBase1,
 *                          *NumFlagListBase2,
 *                          *NumFlagListBase3;
 *
 *       So you easily can have as many simple lists as you want to have.
 *       Normaly such a list is often usable. FAME MainPart uses
 *       8 of them. One for restricted file checkings, one for the
 *       NamesNotAllowed list, one for the NodeToNode comunications,
 *       one for the FlagFromFile/Number function of the menu command "A",
 *       one for file transfering, one for fileskippings, one for
 *       ASL-Requester lists and one for the additional download pathes list.
 *       Every of theese 8 different bases needs only only 4 bytes, because
 *       it's just a pointer! Use lists whereever you can! For this reason
 *       i give you those simple list functions, if you don't know how to do
 *       this, also it saves multiple list handling functions.
 *       In future i will give you more komplex list functions, like the
 *       list functions of the internal lineeditor, there are additional
 *       functions for insert, sorting and many more.
 *       If you write own lists in your doors, think about the usage
 *       of the FAME.library internal memory pool functions, which are
 *       compatible to the original AmigaOS3.x pool functions!
 */

CONST RD_REMOVENUMFLAG=1039
/* Remove your own NumFlagList
 *
 * Data1
 * Data2
 * Data3
 * IOString
 * StructDummy1 <- Your own initilized struct NumFlagList NumFlagListBase
 *                 pointer.
 *
 * Note: Don't forget to set your NumFlagListBase=NULL; if you use it agin
 *       with RD_InitNumFlag!
 */

CONST RD_RESETNUMFLAGS=1040
/* Reset your own NumFlagList
 *
 * Data1
 * Data2
 * Data3
 * IOString
 * StructDummy1 <- Your own initilized struct NumFlagList NumFlagListBase
 *                 pointer.
 *
 * Note: This is the combination of RD_RemoveNumFlag and RD_InitNumFlag.
 *
 * Note: If StructDummy1 is FALSE an internal error has been detected.
 *       In this case you musn't use RD_RemoveNumFlag, RD_ResetNumFlags,
 *       RD_SetNumFlag and RD_GetNumFlag!!!
 */

CONST RD_SETNUMFLAG=1041
/* Flag an entry into your own NumFlagList
 *
 * Data1    <- The number of the new entry. It's on you to count it correctly!
 * Data2
 * Data3    -> Returncode.
 * IOString <- The entry (FileName).
 * StructDummy1 <- Your own initilized struct NumFlagList NumFlagListBase
 *                 pointer.
 *
 * Note: Data3 is the following returncode:
 *        0 means success.
 *       -1 means allocation failed.
 *       -2 means Base not initialized.
 */

CONST RD_GETNUMFLAG=1042
/* Get an entry from your own NumFlagList
 *
 * Data1    <- The number of the entry you want to have.
 * Data2
 * Data3    -> Returncode.
 * IOString -> The entry (FileName).
 * StructDummy1 <- Your own initilized struct NumFlagList NumFlagListBase
 *                 pointer.
 *
 * Note: Data3 is the following returncode:
 *        0 means success.
 *       -1 means entry number not found.
 *       -2 means Base not initialized.
 */

CONST RD_GETUSERDATALOC=1043
/* Get the user datas location path
 *
 * Data1
 * Data2
 * Data3
 * IOString -> 'User.data' name
 * StringPtr -> Locationpath of all user datas.
 */

CONST RD_CONFNAME=1044
/* Change the conference name
 *
 * Data1    <- The conference number.
 * Data2
 * Data3
 * IOString <- The new conference name.
 *
 * Note: If Data1 is lower than 1 or higher than the last conference
 *       available, Data1 will be set to the current conference number!
 */

CONST RD_CONFLOCATION=1045
/* Change the conference location
 *
 * Data1    <- The conference number.
 * Data2
 * Data3
 * IOString <- The new conference location.
 *
 * Note: If Data1 is lower than 1 or higher than the last conference
 *       available, Data1 will be set to the current conference number!
 */

CONST RD_FGETNEXTCONF=1046
/* Update your conf pointer to the next available conference
 *
 * Data1
 * Data2    -> The new conference number. If relative is on, this value is
 *             also relative, else it's the real conference number.
 * Data3
 * IOString
 * StructDummy1 <-> Your struct ConfList pointer.
 *
 * Note: If no next conference is available for the user, this pointer
 *       leaves unchanged, else it will be set to the new conference pointer.
 * Note: If Data2 has a negative value no next conference is available
 *       for the user.
 *
 * Note: I've said above your pointer leaves unchanged in some cases.
 *       This is true, but not if your pointer was NULL. If your pointer
 *       was NULL it now will be the first available conference of the user.
 */

CONST RD_FGETPREVCONF=1047
/* Update your conf pointer to the previous available conference
 *
 * Data1
 * Data2    -> The new conference number. If relative is on, this value is
 *             also relative, else it's the real conference number.
 * Data3
 * IOString
 * StructDummy1 <-> Your struct ConfList pointer.
 *
 * Note: If no previous conference is available for the user, this pointer
 *       leaves unchanged, else it will be set to the new conference pointer.
 * Note: If Data2 has a negative value no previous conference is available
 *       for the user.
 *
 * Note: I've said above your pointer leaves unchanged in some cases.
 *       This is true, but not if your pointer was NULL. If your pointer
 *       was NULL it now will be the first available conference of the user.
 */

CONST RD_FGETCONFNUM=1048
/* Get a pointer to a given conference (relative)
 *
 * Data1    <- The conference number from which you want to get the ptr.
 * Data2    -> The new conference number. If relative is on, this value is
 *             also relative, else it's the real conference number.
 * Data3
 * IOString
 * StructDummy1 -> Your new struct ConfList pointer.
 *
 * Note: This function checks for relative flag, if relative is on, the
 *       number used for conference search (Data1) is handled as relative
 *       conference number, else it's used to search for a real conference
 *       number.
 * Note: If Data2 is -2 your given conference number is not available.
 *       If Data2 is -3 your given conference number is available, but
 *       the user has no access to this conference.
 *
 * Note: Your pointer leaves normaly unchanged if Data2 is -3, but not if
 *       your pointer was NULL. If your pointer was NULL it now will be the
 *       first available conference of the user.
 *
 * Note: If Data1 is lower than 1 or higher than the last conference
 *       available, Data1 will be set to the current conference number!
 */

CONST RD_FGETREALCONFNUM=1049
/* Get a pointer to a given conference (not relative)
 *
 * Data1    <- The conference number from which you want to get the ptr.
 * Data2    -> The new conference number, it's ever real!
 * Data3
 * IOString
 * StructDummy1 -> Your new struct ConfList pointer.
 *
 * Note: If Data2 is negative your given conference number is not available.
 *
 * Note: Your pointer leaves normaly unchanged if Data2 is negative, but not
 *       if your pointer was NULL. If your pointer was NULL it now will be
 *       the first available conference of the user.
 *
 * Note: If Data1 is lower than 1 or higher than the last conference
 *       available, Data1 will be set to the current conference number!
 */

CONST RD_FGETCONFBASE=1050
/* Get the conference base pointer.
 *
 * Data1
 * Data2
 * Data3
 * IOString
 * StructDummy1 -> The conference base pointer.
 *
 * Note: You can only use the element RelativeNext to get the first
 *       available conference of the user.
 *
 * Example:
 *
 * struct ConfList *MyConfPtr = DoorMsg -> StructDummy1 -> RelativeNext;
 *
 * while(MyConfPtr)
 * {
 *   ...
 *   ...
 *   MyConfPtr = MyConfPtr -> RelativeNext;
 * }
 */

CONST RD_FGETAKTCONF=1051
/* Get the current conference pointer.
 *
 * Data1
 * Data2
 * Data3
 * IOString
 * StructDummy1 -> The current conference pointer.
 *
 * Note: You can use this pointer to check for following conferences
 *       (RD_FGetNextConf) or previous conferences (RD_FGetPrevConf).
 *
 * Example:
 *
 * while(DoorMsg -> StructDummy1)
 * {
 *   ...
 *   ...
 *   DoorMsg -> StructDummy1 = DoorMsg -> StructDummy1 -> RelativeNext;
 * }
 */

CONST RD_GIVENUMFROMCONF=1052
/* Get the relative/non relative number from a conference pointer.
 *
 * Data1
 * Data2    -> The conference number. If relative is on, this value is
 *             also relative, else it's the real conference number.
 * Data3
 * IOString
 * StructDummy1 <- Your struct ConfList pointer.
 */

CONST RD_SAVEUFLAGLIST=1053
/* Forbid upload procedure to clear the upload flag list after transfer
 *
 * Data1    <- 0 = clear, else don't clear.
 * Data2
 * Data3
 * IOString
 *
 * Note: If Data1 is non zero from now on the upload procedure won't any
 *       longer clear the flag list of uploaded files and the door can use it
 *       else if Data1 is zero you tell the upload procedure it now can
 *       clear it again.
 *       Normaly the upload procedure clears after finished filechecking
 *       and fileid procedure at last this list to free the memory to
 *       the system. But it's not realy a must, because if the next
 *       upload is started this list will be cleared also before the
 *       real transfer begins. It's a question of memory usage. It's
 *       better to clear it after upload, because we don't know how
 *       may files are in the list and when the next upload will be
 *       started.
 *       If a door want's to know which files were uploaded after
 *       upload procedure it's needed to get this list. To get a filled
 *       list we must use RD_SaveUFlagList with Data1 = TRUE.
 *       Then we can get the base pointer to this list with RD_GetUFlagList.
 *       After we have finished reading from this list, beware it's read
 *       only!!!, we should use RD_ClearUFlagList to clear the list now.
 *       If our door no longer needs information of the list, because
 *       no more upload procedures will be started we should use
 *       RD_SaveUFlagList again with Data1 = FALSE (0) to set the
 *       upload procedure to the origin state. It's not realy bad if you
 *       forget this, because if your door shuts down this flag will be set
 *       automaticly back.
 */

CONST RD_CLEARUFLAGLIST=1054
/* Clear the upload flag list now
 *
 * Data1
 * Data2
 * Data3
 * IOString
 */

CONST RD_GETUFLAGLIST=1055
/* Retrieve the basis of the upload flag list
 *
 * Data1
 * Data2
 * Data3
 * IOString
 * StructDummy1 -> The basis pointer of the upload flag list.
 */

CONST RD_GETMAILHEADER=1056
/* Retrieve the MailHeader pointer (SYSCMD: MAILHEADER)
 *
 * Data1
 * Data2
 * Data3
 * IOString
 * StructDummy1 -> The MailHeader pointer.
 */

CONST RD_SHOWMAILHEADER=1057
/* Inform the Node to show MailHeader (SYSCMD: MAILHEADER)
 *
 * Data1        <- True to show MailHeader, false not.
 * Data2
 * Data3
 * IOString
 */

/*   ###################### COMMAND DEFINES END ###########################
 */

-> #endif  /* FAME_FAMEDOORCOMMANDS_H */

