home *** CD-ROM | disk | FTP | other *** search
/ Garbo / Garbo.cdr / pc / opus / opin103d.lzh / OP-TYPES.TXT < prev    next >
Text File  |  1989-12-03  |  32KB  |  542 lines

  1. Unit OpInt;
  2.  
  3. {*****************************************************************************}
  4. {*                                                                           *}
  5. {*   O p u s   I n t e r f a c e    V e r  1.03                              *}
  6. {*                                                                           *}
  7. {*   Opus V 1.0x Interface for Turbo Pascal Ver 4.0, 5.0 and 5.5             *}
  8. {*                                                                           *}
  9. {*   (C) COPYRIGHT  Per Holm & Bifrost Unlimited - 1988, 1989                *}
  10. {*                                                                           *}
  11. {*     FidoNet:  Per Holm - Asgaard BBS 2:230/22.0                           *}
  12. {*     Internet: perholm@daimi.DK                                            *}
  13. {*                                                                           *}
  14. {*****************************************************************************}
  15.  
  16. Interface
  17.  
  18. Uses Dos;
  19.  
  20. CONST  { Some Nice helpfull constants }
  21.   _Months = 'JanFebMarAprMayJunJulAugSepOctNovDec';
  22.  
  23. TYPE
  24.   _Lines = String[81];
  25.   _StrSys = String[39];
  26.   _Str = STRING[64];
  27.   _String12  = String[12];
  28.   _String20  = String[20];
  29.   _String64  = String[64];
  30.   _String80  = String[80];
  31.  
  32. VAR
  33.   _MsgNew: Boolean;               {* OLD MESSAGE TYPE OR NOT (Default True)  *}
  34.  
  35.   {***************************************************************************}
  36.   {* MESSAGE AND FILE AREAS                                                  *}
  37.   {***************************************************************************}
  38.  
  39.   {---------------------------------------------------------------------------}
  40.   {- Area attributes ( Limit or describe the behavior of an area )           -}
  41.   {---------------------------------------------------------------------------}
  42.  
  43. CONST
  44.   SYSMAIL   = $01;     {* Is a mail area                                     *}
  45.   SYSOVR    = $02;     {* Overwrite files is OK                              *}
  46.   NOPUBLIC  = $04;     {* OPUS: Disallow public messages                     *}
  47.   NOPRIVATE = $08;     {* OPUS: Disallow private messages                    *}
  48.   ANON_OK   = $10;     {* OPUS: Enable anonymous messages                    *}
  49.   ECHOMAIL  = $20;     {* OPUS: Set = Echo-Mail, Clear = no echo mail        *}
  50.  
  51.   {---------------------------------------------------------------------------}
  52.   {- System??.BBS structure ( Don't consider the structure stable )          -}
  53.   {---------------------------------------------------------------------------}
  54.  
  55. TYPE
  56.   _Sys = RECORD                    {******************************************}
  57.            ls_caller : Word;       {*                                        *}
  58.            priv      : Integer;    {* Privilege to use this area             *}
  59.            Msgpath   : _StrSys;    {* Path to message directory              *}
  60.            Bbspath   : _StrSys;    {* Path to .BBS files / Barricade files   *}
  61.            Hlppath   : _StrSys;    {* Path to help directory                 *}
  62.            Uplpath   : _StrSys;    {* Path to Upload Directory.              *}
  63.            filepath  : _StrSys;    {* Path to download directory             *}
  64.            attrib    : Integer;    {* Message/File Atributes (look up.)      *}
  65.            ms_caller : Integer;    {*                                        *}
  66.            Quote     : LongInt;    {*                                        *}
  67.          End;                      {******************************************}
  68.  
  69.   _MSGAREA = RECORD                {******************************************}
  70.                AREA: Integer;      {* Area Number (0-99)                     *}
  71.                MSG: Integer;       {* Message Number                         *}
  72.              END;                  {******************************************}
  73.  
  74.   {***************************************************************************}
  75.   {* OPUS USER FILE Structure                                                *}
  76.   {***************************************************************************}
  77.  
  78.   {---------------------------------------------------------------------------}
  79.   {- User Privileges                                                         -}
  80.   {---------------------------------------------------------------------------}
  81.  
  82. CONST
  83.   Twit       = -2;
  84.   Disgrace   =  0;
  85.   Normal     =  2;
  86.   Privil     =  4;
  87.   Privileged =  4;
  88.   Extra      =  6;
  89.   AsstSysOp  =  8;
  90.   SysOp      = 10;
  91.   Hidden     = 11;
  92.  
  93.   {---------------------------------------------------------------------------}
  94.   {- User Setup Flags.                                                       -}
  95.   {---------------------------------------------------------------------------}
  96.  
  97.   Usr_UseLore  = $08;     { Use the Line Oriented Editor                      }
  98.   Usr_More     = $10;     { Want's the More Prompt                            }
  99.   Usr_Ansi     = $20;     { OPUS: User wants ANSI                             }
  100.   Usr_Kludge   = $40;     { OPUS: Opus Used before                            }
  101.   Usr_FormFeed = $80;     { OPUS: Transmit <FF>                               }
  102.  
  103.   MaxUserRec = 4000;      { The maximum number of Records available in memory }
  104.  
  105.   {---------------------------------------------------------------------------}
  106.   {- Userfile Structure                                                      -}
  107.   {---------------------------------------------------------------------------}
  108.  
  109. TYPE
  110.   _Usr = RECORD                             {*********************************}
  111.           Name,                             {* First and Last-name.          *}
  112.           City:String[35];                  {* City,Country.                 *}
  113.           Lastread:Array[1..10] of _MsgArea;{* Lastread msg# for 10 areas.   *}
  114.           Password:String[15];              {* Password.                     *}
  115.           Calls,                            {* Number of calls to system.    *}
  116.           HelpLevel,                        {* Helplevel (Nov,Reg,Exp).      *}
  117.           Tabs,                             {* Number of spaces pr. tab.     *}
  118.           Nulls,                            {* Number of nulls (delays).     *}
  119.           LastMsgArea,                      {* Message area last visited.    *}
  120.           Flags,                            {* Misc. flags for ANSI etc.     *}
  121.           Privilege:integer;                {* Privilege level (T,D,N,P..H)  *}
  122.           LastDate:String[19];              {* Last time on system (ASCII).  *}
  123.           TimeToday,                        {* Number of minutes used today. *}
  124.           BaudRate,                         {* Baudrate (Used with ^OC).     *}
  125.           Upload,                           {* Total upload in Kbytes.       *}
  126.           Download,                         {* Total download in Kbytes.     *}
  127.           Download_Now,                     {* Download this session in Kb.  *}
  128.           LastFileArea:integer;             {* File area last visited.       *}
  129.           ScreenWidth,                      {* Width of users monitor.       *}
  130.           ScreenLength:byte;                {* Hight of users monitor.       *}
  131.           Credit,                           {* Mail-credit in cents.         *}
  132.           Debit:integer;                    {* Mail-debit in cents.          *}
  133.         End;                                {*********************************}
  134.  
  135.   _UsrPtr = RECORD                           { For Use With UserFast routines }
  136.               _Ptr  : ARRAY[1..MaxUserRec] OF ^__Usr;
  137.               _Recs : Integer;
  138.             END;
  139.  
  140.  
  141.   {***************************************************************************}
  142.   {* OPUS MESSAGE HEADER Structure                                           *}
  143.   {***************************************************************************}
  144.  
  145. CONST
  146.   MaxTextLines = 300;    {* Absolute max number of msg lines                 *}
  147.   MsgPrivate   = $0001;  { Private Messages             * 0000 0000 0000 0001 }
  148.   MsgCrash     = $0002;  { Squirt Mail                  * 0000 0000 0000 0010 }
  149.   Msgread      = $0004;  { Read by addressee            * 0000 0000 0000 0100 }
  150.   MsgSent      = $0008;  { Sent OK (remote)               0000 0000 0000 1000 }
  151.   MsgFile      = $0010;  { File Attached to message     * 0000 0000 0001 0000 }
  152.   MsgFwd       = $0020;  { In Transit                     0000 0000 0010 0000 }
  153.   MsgOrphan    = $0040;  { Unknown Destination Node     * 0000 0000 0100 0000 }
  154.   MsgKill      = $0080;  { kill after bundling            0000 0000 1000 0000 }
  155.   MsgLocal     = $0100;  { FidoNet vs Local               0000 0001 0000 0000 }
  156.   MsgHold      = $0200;  { Hold Don't send              * 0000 0010 0000 0000 }
  157.   MsgXX2       = $0400;  { reserved                    X? 0000 0100 0000 0000 }
  158.   MsgFrq       = $0800;  { File request                 * 0000 1000 0000 0000 }
  159.   MsgRrq       = $1000;  { Receipt requested           X* 0001 0000 0000 0000 }
  160.   MsgCpt       = $2000;  { is a return receipt         X* 0010 0000 0000 0000 }
  161.   MsgArq       = $4000;  { Audit trail requested       X* 0100 0000 0000 0000 }
  162.   MsgUrq       = $8000;  { Update Request              X* 1000 0000 0000 0000 }
  163.                                                      {------------------------}
  164.                                                      {  ^                     }
  165.                                                      {  |                     }
  166.                                                      {   * = Preserved by     }
  167.                                                      {       the Network      }
  168.                                                      {   ? = Stripped by the  }
  169.                                                      {       net (FTSC spec)  }
  170.                                                      {       but preserved by }
  171.                                                      {       Seadog <TM>      }
  172.                                                      {   X = Not used by OPUS }
  173.                                                      {------------------------}
  174.  
  175. TYPE
  176.   _MsgHead = Record
  177.                _From:String[35];
  178.                _To:String[35];
  179.                _Subj:String[71];
  180.                _Date:String[19];
  181.                _Times:Integer;
  182.                _Dest:Integer;
  183.                _Orig:Integer;
  184.                _Cost:Integer;
  185.                _OrigNet:Integer;
  186.                _DestNet:Integer;
  187.                _Written:LongInt;
  188.                _Arived:LongInt;
  189.                _Reply:Integer;
  190.                _Attr:Word;
  191.                _Up:Integer;
  192.              End;
  193.  
  194.   _Msg = Record
  195.            _From:String[35];
  196.            _To:String[35];
  197.            _Subj:String[71];
  198.            _Date:String[19];
  199.            _Times:Integer;
  200.            _Dest:Integer;
  201.            _Orig:Integer;
  202.            _Cost:Integer;
  203.            _OrigNet:Integer;
  204.            _DestNet:Integer;
  205.            _Written:LongInt;
  206.            _Arived:LongInt;
  207.            _Reply:Integer;
  208.            _Attr:Word;
  209.            _Up:Integer;
  210.            Lines:ARRAY[1..MaxTextLines] OF _Lines;
  211.            NumberOfLines: Integer;
  212.          End;
  213.  
  214.   _MsgRaw = Record
  215.               _From:String[35];
  216.               _To:String[35];
  217.               _Subj:String[71];
  218.               _Date:String[19];
  219.               _Times:Integer;
  220.               _Dest:Integer;
  221.               _Orig:Integer;
  222.               _Cost:Integer;
  223.               _OrigNet:Integer;
  224.               _DestNet:Integer;
  225.               _Written:LongInt;
  226.               _Arived:LongInt;
  227.               _Reply:Integer;
  228.               _Attr:Word;
  229.               _Up:Integer;
  230.               Body: Pointer;
  231.               Counter: Word;
  232.             END;
  233.  
  234.   {***************************************************************************}
  235.   {* NODELIST                                                                *}
  236.   {***************************************************************************}
  237.   {*                                                                         *}
  238.   {* NodeList.Sys                                                            *}
  239.   {*                                                                         *}
  240.   {*   NET > 0 and NODE > 0    Normal node                                   *}
  241.   {*                                                                         *}
  242.   {*   NET > 0 and NODE <= 0   Host node                                     *}
  243.   {*                              Net host........node== 0                   *}
  244.   {*                              Regional host...node==-1                   *}
  245.   {*                              Country host....node==-2                   *}
  246.   {*                                                                         *}
  247.   {*   NET == -1      Nodelist.Sys revision                                  *}
  248.   {*                                                                         *}
  249.   {*   NET == -2      Nodelist statement                                     *}
  250.   {*                                                                         *}
  251.   {***************************************************************************}
  252.  
  253.   {---------------------------------------------------------------------------}
  254.   {- NODE   Old style (Nodelist Version 5)                                   -}
  255.   {---------------------------------------------------------------------------}
  256.  
  257.   _Node = RECORD
  258.             Number: Integer;               { Node number                      }
  259.             Net: Integer;                  { Net Number                       }
  260.             Cost: Integer;                 { cost of a message to this node   }
  261.             Rate: Integer;                 { Baud rate                        }
  262.             Name: STRING[19];              { Node Name                        }
  263.             Phone: STRING[39];             { Phone Number                     }
  264.             City: STRING[39];              { City and State                   }
  265.             Password: STRING[6];           { Password String                  }
  266.           END;
  267.  
  268. CONST
  269.  
  270.   {---------------------------------------------------------------------------}
  271.   {- Values for the `NodeFlags' field (Version 6 Nodelist, Binkley version)  -}
  272.   {---------------------------------------------------------------------------}
  273.  
  274.         B_hub    = $0001; { node is a net hub       0000 0000 0000 0001       }
  275.         B_host   = $0002; { node is a net host      0000 0000 0000 0010       }
  276.         B_region = $0004; { node is region coord    0000 0000 0000 0100       }
  277.         B_zone   = $0008; { node is a zone coord    0000 0000 0000 1000       }
  278.         B_CM     = $0010; { runs continuous mail    0000 0000 0001 0000       }
  279.         B_ores1  = $0020; { reserved for Opus       0000 0000 0010 0000       }
  280.         B_ores2  = $0040; { reserved for Opus       0000 0000 0100 0000       }
  281.         B_ores3  = $0080; { reserved for Opus       0000 0000 1000 0000       }
  282.         B_ores4  = $0100; { reserved for Opus       0000 0001 0000 0000       }
  283.         B_ores5  = $0200; { reserved for Opus       0000 0010 0000 0000       }
  284.         B_res1   = $0400; { reserved for non-Opus   0000 0100 0000 0000       }
  285.         B_res2   = $0800; { reserved for non-Opus   0000 1000 0000 0000       }
  286.         B_res3   = $1000; { reserved for non-Opus   0001 0000 0000 0000       }
  287.         B_res4   = $2000; { reserved for non-Opus   0010 0000 0000 0000       }
  288.         B_res5   = $4000; { reserved for non-Opus   0100 0000 0000 0000       }
  289.         B_res6   = $8000; { reserved for non-Opus   1000 0000 0000 0000       }
  290.  
  291.   {---------------------------------------------------------------------------}
  292.   {- NODE   New style (Nodelist Version 6) (Stolen from Binkley)             -}
  293.   {---------------------------------------------------------------------------}
  294.  
  295. TYPE
  296.   _NewNode = RECORD
  297.                Number: Word;         { Node number                            }
  298.                Net: Word;            { Net Number                             }
  299.                Cost: Word;           { cost of a message to this node         }
  300.                Rate: Integer;        { Baud rate                              }
  301.                Name: STRING[33];     { Node Name                              }
  302.                Phone: STRING[39];    { Phone Number                           }
  303.                City: STRING[29];     { City and State                         }
  304.                Password: STRING[8];  { Password String                        }
  305.                RealCost: Word;       { Phone company's charge                 }
  306.                HubNode: Word;        { node # of this node's hub or 0 if none }
  307.                ModemType: Byte;      { RESERVED for Modem Type                }
  308.                NodeFlags: Word;      { Set of flags (See above)               }
  309.              END;
  310.  
  311.   {---------------------------------------------------------------------------}
  312.   {- Nodelist.Idx  File is terminated by EOF                                 -}
  313.   {---------------------------------------------------------------------------}
  314.  
  315.   _ndi = Record
  316.            Node: INTEGER;                 { Node Number                       }
  317.            Net: INTEGER;                  { Net Number                        }
  318.          END;
  319.  
  320.   {***************************************************************************}
  321.   {* OPUS CONTROL FILE AND PARM FILE DECLARATIONS                            *}
  322.   {*************************************************************************-*}
  323.  
  324. CONST
  325.   CTL_VERSION=14;                        { OPUS Control file version          }
  326.   MAX_EXTERN=8;                          { Max external programs              }
  327.   MAXCLASS=12;                           { Number of possible priv levels     }
  328.  
  329.   {---------------------------------------------------------------------------}
  330.   {- Multitaskers (possible values for  'ctl.multitasker' 0 = no multask     -}
  331.   {---------------------------------------------------------------------------}
  332.  
  333.   DoubleDos = 1;
  334.   DesqView = 2;
  335.   TopView = 3;
  336.   TaskView = 4;
  337.   MsWindows = 5;
  338.  
  339.   {---------------------------------------------------------------------------}
  340.   {- Matrix Mask   Undefined bits are reserved for OPUS                      -}
  341.   {---------------------------------------------------------------------------}
  342.  
  343.   No_Traffic = $0001;   { OK to send outbound lokal      0000 0000 0000 0001  }
  344.   Local_Only = $0002;   { ok to send Outbound local      0000 0000 0000 0010  }
  345.   Opus_Only  = $0002;   { only send to #CM systems       0000 0000 0000 0100  }
  346.  
  347.   No_Exits   = $2000;   { Crash/Arc exits ignored        0010 0000 0000 0000  }
  348.   Mail_Only  = $4000;   { no human callers allowed       0100 0000 0000 0000  }
  349.   Take_Req   = $8000;   { File requests are OK           1000 0000 0000 0000  }
  350.  
  351.   {---------------------------------------------------------------------------}
  352.   {- Flags                                                                   -}
  353.   {---------------------------------------------------------------------------}
  354.  
  355.   Logecho    = $0001;   { Log echoMail areas.            0000 0000 0000 0001  }
  356.   Steady     = $0002;   { never change baudrate          0000 0000 0000 0010  }
  357.   MatrixScan = $0004;   { Matrix Scan Echo Areas         0000 0000 0000 0100  }
  358.  
  359. TYPE
  360.  
  361.   {---------------------------------------------------------------------------}
  362.   {- Information about a class of users.  (Unstable Structure)               -}
  363.   {---------------------------------------------------------------------------}
  364.  
  365.   _ClassRec = RECORD
  366.                 Priv: INTEGER;
  367.                 Max_Time: INTEGER;        { Max cume time per day             }
  368.                 Max_Call: INTEGER;        { Max time for one call             }
  369.                 Max_DL: INTEGER;          { Max download bytes per day        }
  370.                 Ratio: WORD;              { ul:dl ratio                       }
  371.                 Min_Baud: WORD;           { Speed needed for logon            }
  372.                 Min_File_Baud: WORD;      { Speed needed for xfer             }
  373.               END;
  374.  
  375.   {---------------------------------------------------------------------------}
  376.   {- The structure of a PRM file          (Unstable Structure)               -}
  377.   {-                                                                         -}
  378.   {- Please notice the Version Number at offset zero.                        -}
  379.   {---------------------------------------------------------------------------}
  380.  
  381.   _Prm = RECORD
  382.            Version: BYTE;                 { For Safety                        }
  383.            TestMode: BYTE;                { Input From KeyBoard, Not Modem    }
  384.       {-}  TotalCallers: LongInt;         { Total Number of callers to system }
  385.       {-}  QuotePosition: LongInt;        { Last position in Quote file       }
  386.            Multitasker: BYTE;             { Multitasker Type  See up Front    }
  387.            Snooping: BYTE;                { Local Monitor Active              }
  388.            EditExit: BYTE;                { 1= Use newuser questionaire       }
  389.            Verbose: BYTE;                 { Wordy SysOp Log                   }
  390.            Terse: BYTE;                   { Brief SysOp Log                   }
  391.            Trace: BYTE;                   { Log trace mode                    }
  392.            ShowAreaPath: BYTE;            { use path not DIR.BBS              }
  393.            TaskNum: BYTE;                 { Task number for multitask Systems }
  394.            ExitVal: BYTE;                 { ERRORLEVEL to use after caller    }
  395.            ValOutside: BYTE;              { ERRORLEVEL for O)utside           }
  396.            ValZero: BYTE;                 { ERRORLEVEL for SysOp O) command   }
  397.            NoCrashmail: BYTE;             { 1= Don't accept Crashmail         }
  398.            AutoKill: BYTE;                { RECD PVT msgs. 0=no, 1=ask, 2=yes }
  399.            CrashExit: BYTE;               { non zere = Errorlevel exit        }
  400.            UnpackArc: BYTE;               { 1= Unpack incomming arcmail       }
  401.            TossEcho: BYTE;                { 1=Toss incomming echomail         }
  402.            ArcExit: BYTE;                 { ERRORLEVEL for after rec. arcmail }
  403.            UseDTR: BYTE;                  { 1 = DROP dtr look busy,0 off hook }
  404.            CarrierMask: INTEGER;          {                                   }
  405.            HandshakeMask: INTEGER;        {                                   }
  406.            CtlaPriv: INTEGER;             { Privil to se ^A lines in msgs     }
  407.            MaxBaud: INTEGER;              { Fastest speed we can use          }
  408.            MinBaud: INTEGER;              { Min baud rate to get online       }
  409.            SpeedGraphics: INTEGER;        { Min Baud for graphics             }
  410.            ComPort:INTEGER;               { 0=COM1, 1=COM2 ...                }
  411.            LogonPriv:INTEGER;             { Accesslevel for new users         }
  412.            DateStyle: INTEGER;            { Used for files.BBS display        }
  413.            SeenPriv: INTEGER;             { Minimum priv to see SEEN-BY line  }
  414.  
  415.            MsgAsk: ARRAY[1..16] OF INTEGER;        { Array of Privs. for      }
  416.                                                    { Massage attr ask's       }
  417.            MsgAssume: ARRAY[1..16] OF INTEGER;        { Array of Privs. for   }
  418.                                                       { Massage attr assumes  }
  419.            MsgFromfile:INTEGER;           { Priv for doing msg from file      }
  420.  
  421.            WatchDog: BYTE;                { 1=set Fossil to reboot during Out }
  422.            Video: BYTE;                   { 0=DOS, 1=FOSSIL, 2=IBM            }
  423.  
  424.       {-}  Filler: ARRAY[1..11] OF BYTE;
  425.  
  426.            EchoExit: BYTE;                { Errorlevel after Echo Edit        }
  427.            Flags: BYTE;                   { Flags def up front                }
  428.  
  429.            OurZone: WORD;                 { The current Zone                  }
  430.            MatrixMask: WORD;              { Look Up Front                     }
  431.  
  432.            _ClassRec: ARRAY[1..MAXCLASS] OF Class_Rec;       { Class Records  }
  433.            Alias: ARRAY[1..15] OF _ndi;         { Node Numbers / Aliasses     }
  434.  
  435.            MInit: _Str;                    { Modem init string                }
  436.            PreDial: _Str;                  { dial prefix sent before number   }
  437.            PostDial: _Str;                 { Sent after number                }
  438.            TimeFormat: _Str;               { Look in BBS.CTL file             }
  439.            DateFormat: _Str;               { Look in BBS.CTL file             }
  440.            FkeyPath: _Str;                 { Path to f-key files              }
  441.            ParmOutside: _Str;              { Prog/Parms for outside file      }
  442.            ParmZero: _Str;                 { Parm for sysop O) command        }
  443.            SysPath: _Str;                  { Path to system??.BBS files       }
  444.            UserFile: _Str;                 { Path/filename to User.BBS file   }
  445.            NetInfo: _Str;                  { Path to nodelist                 }
  446.            SchedName: _Str;                { Name of SCHED FILE               }
  447.            Logo: _Str;                     { First file shown to caller       }
  448.            Welcome: _Str;                  { Shown after logon                }
  449.            Bulletin: _Str;                 { Shown after Welcome file         }
  450.            Edtorial: _Str;                 { Edtorial Menu file               }
  451.            Quote: _Str;                    { File containing Quotes           }
  452.            Question: _Str;                 { Questionaire available main menu }
  453.            RequestList: _Str;              { List of files approved for f.req }
  454.            Newuser1: _Str;                 { Shown before new user enters PW  }
  455.            Newuser2: _Str;                 { Shown after new user enters Passw}
  456.            Rookie: _Str;                   { Shown too rookies after Pasword  }
  457.            Application: _Str;              { New user questionaire            }
  458.            AvailList: _Str;                { File List FILES (f.req)          }
  459.            HlpEditor: _Str;                { Intro to msg editor              }
  460.            HlpReplace: _Str;               { Explain MSG editor E)dit command }
  461.            MsgInquire: _Str;               { Explain MSG I)nquire command     }
  462.            HlpLocate: _Str;                { Explain File L)ocate command     }
  463.            HlpContents: _Str;              { Explain the files contents comm  }
  464.            OutLeaving: _Str;               { Bon Voyage a l'outside           }
  465.            OutReturn: _Str;                { Welcome back from outside        }
  466.            DayLimit: _Str;                 { Sorry, You've been to long....   }
  467.            TimeWarn: _Str;                 { Warning about forced hangup      }
  468.            SysOp: _Str;                    { SysOp's name                     }
  469.            TooSlow: _Str;                  { Explains min logon baud.         }
  470.            Xferbaud: _Str;                 { Explains min file transf baud    }
  471.            MsgAreaList: _Str;              { Dump file instead of DIR.BBS     }
  472.            FileAreaList: _Str;             { Dump file instead of Dir.BBS     }
  473.            MailListFile: _Str;             { Default nodelist file            }
  474.            ByeBye: _Str;                   { Displayed at logoff              }
  475.            FileProt1: _Str;                { Some external file protocols     }
  476.            FileProt2: _Str;
  477.            FileProt3: _Str;
  478.            FileProt4: _Str;
  479.            FileProt5: _Str;
  480.            FileProt6: _Str;
  481.            FileProt7: _Str;
  482.            FileProt8: _Str;
  483.            LocalEditor: _Str;              { SysOps Local Editor              }
  484.            FileMgt: _Str;                  { External File Section Management }
  485.            HoldArea: _Str;                 { Path to Outbound area            }
  486.            Barricade: _Str;
  487.            Badaccess: _Str;
  488.            MsgMgt: _Str;                   { External Message section mgt     }
  489.            MailPath: _Str;                 { Path to inbound bundles (MATRIX) }
  490.            FilePath: _Str;                 { Path for inbound matrix files    }
  491.            OpedHelp: _Str;                 { OpEd help file                   }
  492.            TempPath: _Str;                 { Place to put temporary files     }
  493.            ModemBusy: _Str;                { Modem Busy String                }
  494.            SystemName: _Str;               { System name string               }
  495.            AboutFile: _Str;                { System Info file (About File)    }
  496.            LogName: _Str;                  { Log File Name                    }
  497.          END;
  498.  
  499.   {***************************************************************************}
  500.   {* OPUS SCHEDule file Structure                                            *}
  501.   {***************************************************************************}
  502.  
  503. CONST
  504.   MaxScheds  = 35;       {* Maximum number of events                         *}
  505.   ExtEvent   = 'X';      {* External event (return to Dos)                   *}
  506.   YellEvent  = 'Y';      {* Yell event (when yell is on)                     *}
  507.   ForceEvent = $0001;    {* Force this event.                                *}
  508.   CleanHold  = $0001;    {* This Z-Event is a house cleaning event           *}
  509.  
  510. TYPE
  511.   _Sched = Record
  512.               Year: Word;       {* Usable but doesn't make much sense        *}
  513.               Month: Word;      {* Month of the current event                *}
  514.               Day: Word;        {* Day of the Month                          *}
  515.               DayWk: Word;      {* Day of the week 0=Sun, 6=Sat, 7=all.      *}
  516.               Hour: Word;       {* 0..23   Starting hour                     *}
  517.               Min: Word;        {* 0..59   Starting minute                   *}
  518.               Sec: Word;        {* Unused                                    *}
  519.               Len: Word;        {* Length of the event                       *}
  520.               Enable: Integer;  {* 1= enabled                                *}
  521.               Trigger: Word;    {* Unknown/Unused                            *}
  522.               Result: Word;     {* X errorlevel, Y duration of Bell          *}
  523.               Tag: Char;        {* Event Type 'A' .. 'Z'                     *}
  524.               Junk_1: Byte;     {* Dummy                                     *}
  525.               Last_ran: Word;   {* Day of month when event was executed last *}
  526.               B: Word;          {* Reserved for OPUS                         *}
  527.               C: Word;          {* Reserved for external utilities           *}
  528.               Behavior: Word;   {* Behavior of Z events.  See tabble earlier *}
  529.               EventMask: Byte;  {* Force this event                          *}
  530.               GMT: Byte;        {* Set = GMT, Clear = Local time             *}
  531.            END;
  532.  
  533.   {---------------------------------------------------------------------------}
  534.   {- Z-Event Behavior...                                                     -}
  535.   {-  IF RESULT = 1, The 'behavior' field contains a "Matrix Mask". Those    -}
  536.   {-                 are described in the PRM definations.                   -}
  537.   {-  IF RESULT = 2, It is an internal hausecleaning event.                  -}
  538.   {---------------------------------------------------------------------------}
  539.  
  540.   _Scheds = ARRAY[1..MaxScheds] OF _Sched;
  541.  
  542.