home *** CD-ROM | disk | FTP | other *** search
/ ProfitPress Mega CDROM2 …eeware (MSDOS)(1992)(Eng) / ProfitPress-MegaCDROM2.B6I / BBS / MISC / EZY101_3.ZIP / STRUCTP.101 < prev   
Encoding:
Text File  |  1992-05-20  |  52.0 KB  |  1,499 lines

  1. (*  Ezycom Structures  (C) Peter Davies.  All Rights Reserved.
  2.     Revised for Ezycom V1.01 09/05/1992.
  3.  
  4.     May be freely used by 3rd Party Developers for Ezycom.
  5.  
  6.     Written permission must be granted by Peter Davies for
  7.     non-third party use. *)
  8.  
  9. (*  Pascal to C
  10.     typedef char unsigned byte;
  11.     typedef int  unsigned word;
  12.     typedef char unsigned boolean;
  13.     typedef long signed   longint;
  14.  
  15.      All Strings require one extra character.
  16.      The first field of a string [0] is the length of the string *)
  17.  
  18. (*   Turbo Pascal defines
  19.  
  20.      DateTime = Record
  21.         Year,
  22.         Month,
  23.         Day,
  24.         Hour,
  25.         Min,
  26.         Sec   : word;
  27.      end; *)
  28.  
  29. const
  30.     version      = '1.01';
  31.     productname  = 'Ezycom';
  32.     versionhigh  = 1;
  33.     versionlow   = 1;
  34.     copyright    = 'Peter Davies';
  35.     maxfree      = 685;
  36.     userfree     = 35;
  37.     maxnodes     = 128;
  38.     maxaka       = 16;
  39.     maxmess      = 400;
  40.     maxmessall   = 500;
  41.     maxfile      = 400;
  42.  
  43.     (* Message Types *)
  44.  
  45.     localmail = 0;
  46.     netmail   = 1;
  47.     echomail  = 2;
  48.     passthru  = 3;
  49.     waitthru  = 4;
  50.     allmail   = 5;
  51.  
  52.     (* Ask Types *)
  53.  
  54.     askyes    = 0;
  55.     askno     = 1;
  56.     askask    = 2;
  57.  
  58.     (* Phone Types *)
  59.  
  60.     business  = 0;
  61.     data      = 1;
  62.     nophone   = 2;
  63.  
  64.     (* File Size Types *)
  65.  
  66.     nosize    = 0;
  67.     sizebytes = 1;
  68.     sizekilobytes = 2;
  69.  
  70.     (* Message Kinds Type *)
  71.  
  72.     public        = 0;
  73.     private       = 1;
  74.     privatepublic = 2;
  75.  
  76.     (* Swapping Types *)
  77.  
  78.     SwapwithNone   = 0;
  79.     SwapwithEMS    = 1;
  80.     SwapwithXMS    = 2;
  81.     SwapwithDISK   = 3;
  82.     SwapwithEMSXMS = 4;
  83.     SwapwithXMSEMS = 5;
  84.  
  85.     (* Toss Attribute 1 *)
  86.     msgdupedetect     = 3;
  87.     msgdeletenetmail  = 4;
  88.     msgechoarearecpt  = 5;
  89.     msgimportnetsysop = 7;
  90.  
  91.     (* Toss Attribute 2 *)
  92.     msgkillbadarchive = 2;
  93.  
  94.     (* User Attributes *)
  95.     usr1deleted          = 0;
  96.     usr1clrscr           = 1;
  97.     usr1moreprompt       = 2;
  98.     usr1ansicapable      = 3;
  99.     usr1nokill           = 4;
  100.     usr1filepointignore  = 5;
  101.     usr1fullscreened     = 6;
  102.     usr1quietmode        = 7;
  103.     usr2ignorefileratios = 0;
  104.     usr2ibmextended      = 1;
  105.     usr2dateformat       = 2;
  106.     usr2ignorepaging     = 3;
  107.     usr2excludeuser      = 4;
  108.     usr2avatarcapable    = 5;
  109.     usr2ignoretime       = 6;
  110.     usr2ignoremessratio  = 7;
  111.     usr3nopagesound      = 0;
  112.     usr3pageatlogon      = 1;
  113.     usr3holdmailbox      = 2;
  114.  
  115. type
  116.      asktype        = byte;
  117.      phonetype      = byte;
  118.      msgtype        = byte;
  119.      msgkindstype   = byte;
  120.      showfilesizetype = byte;
  121.      maxstr         = string[255];
  122.      userstring     = string[35];
  123.      date           = string[8];
  124.      str2           = string[2];
  125.      str3           = string[3];
  126.      str8           = string[8];
  127.      str12          = string[12];
  128.      str30          = string[30];
  129.      file8          = str8;
  130.      flagtype       = array[1..4] of byte;
  131.      grouptype      = array[1..4] of byte;
  132.  
  133.      daterecord     = record
  134.         year        : word;
  135.         month       : byte;
  136.         day         : byte;
  137.      end;
  138.  
  139.      securityrecord = record
  140.                      security : word;
  141.                      onflags  : flagtype;
  142.                      offflags : flagtype;
  143.      end;
  144.  
  145.      netrecord      = record
  146.                      zone,
  147.                      net,
  148.                      node,
  149.                      point   : word;
  150.      end;
  151.  
  152.     (* **********************************************************
  153.  
  154.        Filename:    <configrec.userbasepath>USERS.BBS
  155.  
  156.        Description: Users File
  157.                     Records in parrallel with USERSEXT.BBS
  158.  
  159.        Limitations: 65536 records (users) maximum
  160.  
  161.        ********************************************************** *)
  162.  
  163.         usersrecord    = record
  164.            name           : userstring;
  165.            alias          : userstring;
  166.            password       : string[15];
  167.            security       : word;
  168.            attribute,
  169.               (* Bit 0 : Deleted
  170.                      1 : Clear Screen
  171.                      2 : More Prompt
  172.                      3 : Ansi Capable
  173.                      4 : Don't Kill User
  174.                      5 : File Points Ignore
  175.                      6 : Full Screen Ed
  176.                      7 : Quiet Mode        *)
  177.            attribute2,
  178.               (* Bit 0 : Ignore File Ratios
  179.                      1 : Extended IBM Characters
  180.                      2 : On = MMDDYY Off = DDMMYY
  181.                      3 : Ignore Paging Hours
  182.                      4 : Exclude User
  183.                      5 : Avatar Capable
  184.                      6 : Ignore Menu Time Restrictions
  185.                      7 : Ignore Message Ratios         *)
  186.            attribute3,
  187.               (* Bit 0 : Do Not Sound Page
  188.                      1 : Page on Logon
  189.                      2 : Hold Mailbox
  190.                    3-7 : [Reserved] *)
  191.            attribute4     : byte;
  192.               (* Bit 0-7 : [Reserved] *)
  193.            flags          : FlagType;
  194.            dataphone,
  195.            voicephone     : String[14];
  196.      end;
  197.  
  198.  
  199.     (* **********************************************************
  200.  
  201.        Filename:    <configrec.userbasepath>USERSEXT.BBS
  202.  
  203.        Description: Extended Users Information
  204.                     Records in parrallel with USERS.BBS
  205.  
  206.        Future:      V1.02 Structure size increasing to 320 bytes
  207.  
  208.        ********************************************************** *)
  209.  
  210.  
  211.         usersextrarecord = record
  212.            location       : string[25];
  213.            lasttimedate   : longint;
  214.               (* DOS Packed Date/Time *)
  215.            credit,
  216.               (* Users netmail credit *)
  217.            pending        : word;
  218.               (* Netmail cost pending export *)
  219.            msgsposted,
  220.            nocalls,
  221.            uploads,
  222.            todayk,
  223.            timeused,
  224.            downloads      : word;
  225.            uploadsk,
  226.            downloadsk     : longint;
  227.            screenlength   : byte;
  228.            lastpwdchange  : byte;
  229.            timebanked,
  230.            ksbanked,
  231.            filepoints     : word;
  232.            qwkcompression : byte;
  233.            qwkdaysold     : byte;
  234.            comment        : string[40]; (* Sysop/User Comment *)
  235.            colour1_2,  (* To retrieve the first colour AND 15
  236.                           To retrieve the second colour SHR 4  *)
  237.            colour3_4,
  238.            colour5_6,
  239.            colour7_8,
  240.            bkcolour        : byte;
  241.            sessionfailures : byte; (* Number of Session Failures since last
  242.                                       successful logon *)
  243.            topmenu        : str8; (* User's Top Menu *)
  244.            filepointsgiven : word;
  245.               (* Number of Filepoints credited since last logon *)
  246.            dateofbirth    : daterecord;
  247.            groups         : grouptype; (* user's group setting (compressed) *)
  248.            regodate,                   (* Start of Registration *)
  249.            firstdate,                  (* Date of First Logon *)
  250.            lastfiledate   : word; (* Last Time a New Files Search was done *)
  251.            defprotocol    : char; (* Blank means no default protocol *)
  252.            timeleft       : word; (* Users remaining time for today *)
  253.            filearea       : word; (* Last file area user used *)
  254.            messarea       : word; (* Last message area user used *)
  255.            usernumbermsb,
  256.            usernumberlsb  : longint;
  257.               (* Both Most Significant and Least Significant
  258.                  User Numbers together make a totally unique
  259.                  user identification number.  This should be
  260.                  used by door writers to save space, instead
  261.                  of storing the full users name.  Obviously
  262.                  not all doors would fit into this category,
  263.                  but most should *)
  264.            qwkmaxmsgs     : longint;
  265.            qwkmaxmsgsperarea : word;
  266.            extraspace     : array[1..userfree] of byte;
  267.         end;
  268.  
  269.     (* **********************************************************
  270.  
  271.        Filename:     <userbasepath>LASTCOMB.BBS
  272.  
  273.        Description:  Used be Ezycom to lastread & combined info
  274.  
  275.        Note:         This record adjusts when the number of
  276.                      conferences change (in steps of 16).
  277.                      Eg: 16 conferences takes up HALF of the
  278.                           diskspace of 32 conferences
  279.  
  280.  
  281.        ********************************************************** *)
  282.  
  283.         userslastrecord = record (* LASTCOMB.BBS *)
  284.            combinedinfo    : word;
  285.            lastreadinfo    : array[0..15] of word;
  286.         end;
  287.  
  288.  
  289.     (* **********************************************************
  290.  
  291.        Filename:    <configrec.menupath>????????.MNU
  292.  
  293.        Description: Menu Structure
  294.                     Record 0 has a different record structure
  295.  
  296.        Limitations: 51 records maximum
  297.  
  298.        ********************************************************** *)
  299.  
  300.  
  301.      mnurecord      = record (* *.MNU *)
  302.                      typ            : byte;
  303.                      security       : word;
  304.                      flags          : flagtype;
  305.                      display        : string[90];
  306.                      hotkey         : char;
  307.                      (* Ctrl-A means Automatic Option *)
  308.                      miscdata       : string[90];
  309.                      foreground,
  310.                      background     : byte;
  311.                      timeonline     : byte;
  312.                      timestart      : word;
  313.                      timeend        : word;
  314.                      (* Hours is "* 100" *)
  315.                      attribute      : byte;
  316.                      (* bit 0 : Test Ratio K
  317.                         bit 1 : Test Message/Call Ratio
  318.                         bit 2 : Test Age <config age> and Over
  319.                         bit 3 : Test Ratio Files
  320.                         bit 4-7 [ Reserved ] *)
  321.                      node           : byte;
  322.                    end;
  323.  
  324.     (* **********************************************************
  325.  
  326.        Filename:    PROTOCOL.EZY
  327.  
  328.        Description: Protocol Record Structure
  329.  
  330.        Limitations: 60 records maximum
  331.  
  332.        ********************************************************** *)
  333.  
  334.  
  335.     protocolrecord = record (* PROTOCOL.EZY *)
  336.                      name             : string[15];
  337.                      activekey        : char;
  338.                      attribute        : byte;
  339.                      (* bit 0 = enable/disable
  340.                         bit 1 = batch protocol
  341.                         bit 2 = [ Reserved ]
  342.                         bit 3 = both directions
  343.                         bit 4 = up/down
  344.                         bit 5 = bidirectional
  345.                         bit 6-7 [ Reserved ] *)
  346.                      logfilename,
  347.                      ctlfilename,
  348.                      dnctlstring      : string[60];
  349.                      dncmdstring,
  350.                      upcmdstring      : string[100];
  351.                      uplogkeyword,
  352.                      dnlogkeyword,
  353.                      uperrkeyword,
  354.                      dnerrkeyword,
  355.                      uperr2keyword,
  356.                      dnerr2keyword    : string[10];
  357.                      xfernamewordnum  : Byte;
  358.                      xfercpswordnum   : byte;
  359.                      security         : word;
  360.                      flags            : flagtype;
  361.                      efficiency       : byte;
  362.                    end;
  363.  
  364.  
  365.      configrecord = record (* CONFIG.EZY *)
  366.                      version      : string[8];
  367.                      system       : string[40];
  368.    (* Constant *)    sysop        : userstring;
  369.                      logpath,
  370.                      textpath,
  371.                      menupath,
  372.                      mnurampath,
  373.                      netmailpath,
  374.                      nodelistpath,
  375.                      msgpath,
  376.                      filepath,
  377.                      editorpath,
  378.                      bipath,
  379.                      temppath,
  380.                      userbasepath,
  381.                      avatarpath,
  382.                      ascpath,
  383.                      asclowpath,
  384.                      filemaint,
  385.    (* Unused *)      fileattachpath,
  386.                      soundpath,
  387.                      fastindexpath : string[60];
  388.                      systempwd,                 (* Password to Logon System *)
  389.                      sysoppwd,                  (* Password to Sysop Functions *)
  390.                      newuserpwd   : string[15]; (* Password for Newuser *)
  391.                      newtopmenu   : str8;       (* NewUser TopMenu *)
  392.  
  393.    (* Unused *)      freespace2   : longint;
  394.  
  395.                      inboundmail,
  396.                      outboundmail,
  397.                      uploadpath,
  398.                      swapfile,
  399.                      multipath    : string[60];
  400.    (* Not in 1.02 *) brackets     : string[2];
  401.                      inactivitytime,
  402.                      minmesscheck,
  403.                      maxlogintime : byte;
  404.    (* Constant *)    multiline    : boolean;
  405.                      answerdelay  : byte;
  406.                      shellswap,
  407.                      highbit,
  408.                      disppass,
  409.                      asklocalpass,
  410.                      fastlogon,
  411.                      sysopremote,
  412.                      printerlog,
  413.                      phone1ask,
  414.                      colourask,
  415.                      aliasask,
  416.                      dobask,
  417.                      phoneforce,
  418.                      direct_video,
  419.                      snow_check   : boolean;
  420.                      swaponezymail : byte;
  421.                      screen_blank : byte;
  422.                      oneword      : boolean;
  423.                      checkmail,
  424.                      checkfile,
  425.                      ansiask,
  426.                      fullscreenask,
  427.                      clearask,
  428.                      moreask,
  429.                      avatarask,
  430.                      extendask,
  431.                      usdateask    : asktype;
  432.                      phone2ask    : boolean;
  433.                      phoneformat  : string[14];
  434.                      nameprompt,
  435.                      pwdprompt,
  436.                      shellprompt,
  437.                      shell2prompt,
  438.                      enterprompt,
  439.                      chatprompt,
  440.                      listprompt,
  441.                      graphicprompt,
  442.                      fseprompt,
  443.                      moreprompt,
  444.                      waitphone,
  445.                      chat2prompt,
  446.                      screenlengthprompt,
  447.                      screenclearprompt,
  448.                      locationprompt,
  449.                      userscanprompt,
  450.                      loadprompt,
  451.                      avatarprompt,
  452.                      aliasprompt  : string[60];
  453.                      security,
  454.                      logonsecurity : word;
  455.                      flags         : flagtype;
  456.                      minpasslength,
  457.    (* Constant *)    dispfwind,
  458.    (* Constant *)    dispbwind,
  459.    (* Constant *)    disppopupf,               (* Popup Forground  *)
  460.    (* Constant *)    disppopupborder,          (* Popup Border     *)
  461.    (* Constant *)    disppopupb,               (* Popup Background *)
  462.    (* Constant *)    dispf,
  463.                      newusercol1,
  464.                      comport,
  465.                      passlogons   : byte;
  466.                      doblogon     : byte;
  467.                      printerport,
  468.                         (* 0 : LPT1
  469.                            1 : LPT2
  470.                            2 : LPT3
  471.                            3 : COM1
  472.                            4 : COM2
  473.                            5 : COM3
  474.                            6 : COM4  *)
  475.                      passtries      : byte;
  476.                      topmenu        : string[8];
  477.                      maxtimebank,
  478.                      maxksbank,
  479.                      watchmess,
  480.                      netmailcredit,
  481.                      ansiminbaud,
  482.                      fileminbaud,
  483.                      slowbaud,
  484.                      minloginbaud   : word;
  485.                      lowsecuritystart,
  486.                      lowsecurityend,
  487.                      slowstart,
  488.                      slowend        : word;
  489.                      quotestring    : string[5];
  490.                      unknownarea    : byte;
  491.                         (* 0 : Kill Messages
  492.                            1 : Make a New EchoMail Area
  493.                            2 : Make a New PassThru Area *)
  494.    (* Not in 1.02 *) SBIrq             : byte;
  495.                      forcecrashmail,
  496.                      optioncrashmail,
  497.                      netmailfileattach : word;
  498.    (* Constant *)    popuphighlight    : byte;     (* Popup Highlight *)
  499.    (* Constant *)    tossattr2         : byte;
  500.                         (* Bit 0 : Route Mail (Off = Direct)
  501.                                1 : [Reserved]
  502.                                2 : Kill Bad Archives
  503.                                3 : ARCMail 0.6 compat
  504.                                4-7 [Reserved] *)
  505.                      maxpages,
  506.                      maxpagefiles,
  507.                      pagelength     : byte;
  508.                      pagestart      : array[0..6] of word;
  509.                      pagemessboard,
  510.                         (* Message Board for Paging (0=Not In Use) *)
  511.    (* Unused *)      localfattachsec,
  512.    (* Unused *)      sectouploadmess,
  513.                      sectoupdateusers,
  514.                      readsecnewecho,
  515.                      writesecnewecho,
  516.                      sysopsecnewecho,
  517.                      secreplyvianetmail : word;
  518.                      netmailkillsent    : asktype;
  519.                      swaponarchive      : byte;
  520.    (* Constant *)    qwkfilename    : str8; (* QWK Unique Filename *)
  521.    (* Constant *)    popuptext      : byte;           (* Popup Text *)
  522.                      pageend        : array[0..6] of word;
  523.    (* Constant *)    newareagroup   : array[1..16] of char;
  524.    (* Constant *)    qwkmaxmail     : longint;
  525.                      badmsgboard,
  526.                      incomingcallstart,
  527.                      incomingcallend : word;
  528.    (* Not in 1.02 *) SBHex          : word;
  529.                         (* Sound Blaster Hex Address *)
  530.                      altf           : array[1..10] of string[60];
  531.                      ctrlf          : array[1..10] of string[40];
  532.    (* Constant *)    maxmess,
  533.    (* Constant *)    maxfile,
  534.                      fp_credit      : word; (* Newuser Filepoints *)
  535.                      ks_per_fp,             (* Number of Kilobytes per FP *)
  536.                      fp_upload,             (* Filepoints Upload Credit *)
  537.                      rego_warn_1,
  538.                      rego_warn_2    : byte;
  539.                      badpwdmsgboard : word;
  540.                         (* Failed Logon Message Board to Sysop (0=Off) *)
  541.                      min_space_1    : word;
  542.                      swapbimodem    : boolean;
  543.                      modembusy      : boolean; (* Toggle DTR or ATH1 *)
  544.                      scrheight      : boolean; (* 43/50 line mode *)
  545.    (* Not in 1.02 *) msgtmptype     : boolean;
  546.                         (* True  = MSGTMP
  547.                            False = MSGTMP.<node> *)
  548.                      swapupload     : boolean;
  549.                      phonelogon     : byte;
  550.                      carrierdetect  : byte; (* Carrier Detect (Default=$80) *)
  551.                      newfileshighlight : boolean;
  552.   (* Word in 1.02 *) max_descrip    : byte;
  553.                      min_descrip    : byte;
  554.                      requestreceipt : word;
  555.                      ushowdate      : boolean;
  556.                      ufilesizek     : showfilesizetype;
  557.                      uuploader,
  558.                      udownloadcount,
  559.    (* Unused *)      freespace11,
  560.                      ushowsecurity,
  561.                      sshowdate      : boolean;
  562.                      sfilesizek     : showfilesizetype;
  563.                      suploader,
  564.                      sdownloadcount,
  565.    (* Unused *)      freespace10,
  566.                      sshowsecurity,
  567.                      ushowtime,
  568.                      ushowfp,
  569.                      sshowtime,
  570.                      sshowfp         : boolean;
  571.                      fp_percent      : word; (* Download Filepoints Credit *)
  572.                      autodetect      : byte;
  573.                         (* Bit 0 : Auto Detect ANSI
  574.                                1 : ANSI Detect for NewUser
  575.                                2 : Auto Detect IEMSI
  576.                                3 : IEMSI Detect for NewUser
  577.                                4-7 [Reserved] *)
  578.                      dispsecurityfile,
  579.                      askforpagereason,
  580.                      delincompletefiles,
  581.    (* Unused *)      externalconvert  : boolean;
  582.    (* Constant *)    swaponfeditview  : byte;
  583.    (* Unused *)      freespace13,
  584.                      secfileschar,
  585.                      passchar,
  586.    (* Not in 1.02 *) highbitchar     : char;
  587.    (* Unused *)      conversiononmaster : byte;
  588.    (* Not in 1.02 *) leftbracket     : string[1];
  589.    (* Not in 1.02 *) rightbracket    : string[1];
  590.                      ignorefp        : word; (* Min Security to Ignore FPs *)
  591.                      menuminage      : byte; (* Minimum Age for Age Checks *)
  592.    (* Constant *)    killnullnetmail : boolean;
  593.                      modemeff        : array[1..11] of word;
  594.                      modembaud       : array[1..11] of word;
  595.                      modemconnect    : array[1..11] of string[15];
  596.                      modemerr        : array[1..11] of byte;
  597.    (* Constant *)    tossattr        : byte;
  598.                         (*  Bit 0-2 [Reserved]
  599.                                 3 : Dupe Detection
  600.                                 4 : Delete Netmail on Import
  601.                                 5 : Keep EchoArea Node Receipts
  602.                                 6 : Allow Message Rescan
  603.                                 7 : Import Messages to Sysop *)
  604.                      usercol1_2,
  605.                      usercol3_4,
  606.                      usercol5_6,
  607.                      usercol7_8,
  608.                      userbkcol       : byte;
  609.                      newusercol2     : byte;
  610.                      chstatcol       : byte;
  611.                      getentercol     : byte;
  612.                      usdateforsysop  : boolean;
  613.                      ezyovrpath      : string[60];
  614.                      sysopalias      : userstring;
  615.                      ovrems          : boolean;
  616.                      swapezy         : byte;
  617.                      filesecpath     : string[60];
  618.    (* Unused *)      scanvirus       : boolean;
  619.                      multitasker     : byte;
  620.                      (*  0 = Do Not Detect or Use Any MultiTasker
  621.                          1 = Auto-Detect
  622.                          2 = Desqview
  623.                          3 = Double DOS
  624.                          4 = OS 2
  625.                          5 = MultiDOS Plus
  626.                          6 = Taskview
  627.                          7 = Topview
  628.                          8 = PC MOS
  629.                          9..255 [Reserved] *)
  630.                      maxbaud         : word; (* longint in 1.02 *)
  631.                      lockedport      : boolean;
  632.                      filereqsec      : word;
  633.                      autoanswer      : boolean;
  634.                      initresponse    : string[10];
  635.                      ringstring      : string[10];
  636.                      inittries       : byte;
  637.                      initstring1     : string[60];
  638.                      initstring2     : string[60];
  639.                      busystring      : string[20];
  640.                      answerstring    : string[20];
  641.                      mailerstring    : string[60];
  642.                      modemstart      : word;
  643.                      modemend        : word;
  644.                      modemdelay      : byte;
  645.                      sendbreak       : boolean;
  646.                      externaleditor  : string[60];
  647.                      defaultorigin   : string[50];
  648.    (* Constant *)    newareastmess   : array[1..16] of word;
  649.                         (* New Area Start Message Board *)
  650.                      uploadcredit    : word;
  651.                         (* Upload Credit Percentage *)
  652.                      systemlocation  : string[35];
  653.                      shownewfileschar : byte;
  654.                         (* 0 - No
  655.                            1 - ASCII Only
  656.                            2 - Always *)
  657.    (* Constant *)    zone            : array[1..16] of word;
  658.                      net             : array[1..16] of word;
  659.                      node            : array[1..16] of word;
  660.                      point           : array[1..16] of word;
  661.                         (* V1.02 this will be:  netaka : array[1..16] of netrecord; *)
  662.    (* Constant *)    netmailboard    : array[1..16] of word;
  663.    (* Constant *)    domain          : array[1..16] of string[20];
  664.                      nocarrierstring : string[20];
  665.                      guestaccount    : userstring;
  666.                      freespace       : array[1..maxfree] of byte;
  667.                   end;
  668.  
  669.         (* Note: Strings that are marked CONSTANT, should be constant
  670.            across all CONFIG.XXX. *)
  671.  
  672.         compressrecord = record
  673.            echounarccmd    : array[0..5] of String[12];
  674.            echounarcpar    : array[0..5] of String[18];
  675.            echoarccmd      : array[0..6] of String[12];
  676.            echoarcpar      : array[0..6] of String[18];
  677.         end;
  678.  
  679.         stringrecord = record
  680.            compress : compressrecord;
  681.         end;
  682.  
  683.         limitsrecord = record (* LIMITS.EZY *)
  684.            security    : word; (* Security level *)
  685.            time        : word; (* Time limit per day *)
  686.            limit       : array[1..11] of word;
  687.            ratio       : byte; (* File Ratio *)
  688.            credit      : word; (* File Ratio Credit *)
  689.            ratiok      : byte; (* Kilobyte Ratio *)
  690.            creditk     : word; (* Kilobyte Ratio Credit *)
  691.            regodays    : word; (* Registration in Days *)
  692.            creditmess  : word; (* PCR Credit *)
  693.            mess        : word; (* PCR (%) *)
  694.            timepercall : word; (* Time limit per call   0=Disabled *)
  695.            callsperday : byte; (* Maximum Calls Per Day 0=Disabled *)
  696.            freespace   : byte;
  697.         end;
  698.  
  699.         filepathrecord = record (* FILEPATH.EZY *)
  700.            filepath    : string[60];
  701.            security    : word;
  702.            flags       : flagtype;
  703.            uploadarea  : word;
  704.            password    : string[8];
  705.            attribute   : byte;
  706.               (* Bit 0 = CD Rom Path
  707.                      1 = Show as Not Found
  708.                      2 = Free Downloads
  709.                      3 = Age Check
  710.                      4-7 [Reserved] *)
  711.         end;
  712.  
  713.         filesecrecord = record (* FILESEC.EZY *)
  714.            filename    : string[12];
  715.            security    : word;
  716.            flags       : flagtype;
  717.            password    : string[8];
  718.            attribute   : byte;
  719.              (*  Bit 0 = [Reserved]
  720.                      1 = Show as Not Found
  721.                      2 = Free Downloads
  722.                      3 = Age Check
  723.                      4-7 [Reserved] *)
  724.         end;
  725.  
  726.         filelistrecord = record (* FILEXXX.EZY *)
  727.            filename    : string[12];
  728.            description : string[50];
  729.            fsize       : longint;
  730.            fdate       : word;
  731.            attribute   : byte;
  732.               (* Bit 0 : checked
  733.                      1 : [Reserved]
  734.                      2 : offline
  735.                      3 : [Reserved]
  736.                      4 : private
  737.                      5 : deleted
  738.                      6 : [Reserved]
  739.                      7 : security *)
  740.            attribute2  : byte;
  741.               (* bit 0-7 [Reserved] *)
  742.            uploader    : userstring;
  743.            downloads   : word;
  744.         end;
  745.  
  746.         filerecord = record (* FILES.EZY *)
  747.            name        : string[30];
  748.            attribute,
  749.               (* bit 0 : keep files offline
  750.                      1 : offline allowed
  751.                      2 : sortby date
  752.                      3 : sortby alpha
  753.                      4 : master list
  754.                      5 : Age Check to View
  755.                      6-7 [ Reserved ] *)
  756.            convert     : byte;
  757.               (* 0     : none
  758.                  1     : zip
  759.                  2     : lzh
  760.                  3     : arj
  761.                  4     : pak
  762.                  5     : arc
  763.                  6     : zoo
  764.                  7-255 : [ Reserved ] *)
  765.            filegroup   : char;
  766.            uptemplate,
  767.            upfilepath  : word;
  768.  
  769.            freespace   : longint;
  770.  
  771.            security    : word;
  772.            flags       : flagtype;
  773.            syssecurity : word;
  774.            sysflags    : flagtype;
  775.         end;
  776.  
  777.         predownloadrecord = record (* EZYDOWN.<node> *)
  778.            filename      : string[12];
  779.            locationfile  : maxstr;
  780.            fsize         : longint; (* KiloBytes *)
  781.            freedown      : boolean;
  782.            timetodown    : longint; (* Seconds *)
  783.            deleted       : boolean;
  784.         end;
  785.  
  786.         preuploadrecord = record  (* EZYUP.<node> *)
  787.            filename      : string[12];
  788.            description   : string[50];
  789.            isdupe        : boolean;
  790.         end;
  791.  
  792.         maint_record = record (* MAINT1.BBS, MAINT2.BBS *)
  793.            filename      : string[12];
  794.            filepoint     : word;
  795.            downloader    : userstring;
  796.            uploader      : userstring;
  797.         end;
  798.  
  799.         fastpointerrecord = array[1..730] of longint; (* FFPTR.EZY *)
  800.  
  801.         fastindexrecord = record (* FFIDX.EZY *)
  802.            name     : string[12];
  803.            template : word;    (* Filearea 1 -> *)
  804.            deleted  : boolean;
  805.         end;
  806.  
  807.     (* **********************************************************
  808.  
  809.        Filename:     <multipath>ONLINE.BBS
  810.  
  811.        Description:  Used by Ezycom to store online information
  812.  
  813.        Minimum Size: 1 Record
  814.        Maximum Size: 250 Records
  815.  
  816.        ********************************************************** *)
  817.  
  818.         onlinerecord   = record
  819.            name     : userstring;
  820.            alias    : userstring;
  821.            status   : byte;
  822.            (* 0 - Active
  823.               1 - [Reserved]
  824.               2 - Downloading
  825.               3 - Uploading
  826.               4 - BiModem
  827.               5 - Message Browsing
  828.               6 - Door
  829.               7 - Chat with Sysop
  830.               8 - Chat with Other Users Channel 000
  831.               ...................................
  832.             207 - Chat with Other Users Channel 199 (200 channels)
  833.             208 - 252 [Reserved]
  834.             253 - Node Not Active in Any Way
  835.             254 - User Logging On
  836.             255 - Waiting for Caller *)
  837.            attribute : byte;
  838.            (* Bit 0 - Quiet Do Not Disturb *)
  839.            baud     : longint;
  840.            location : string[25];
  841.         end;
  842.  
  843.     (* **********************************************************
  844.  
  845.        Filename:     <multipath>MESSNODE.<node>
  846.  
  847.        Description:  Used by Ezycom for conferencing
  848.  
  849.        Minimum Size: 0 Records (Maybe not present!)
  850.        Maximum Size: Unlimited
  851.  
  852.        Sharing:
  853.             Writing: Denynone + WriteOnly
  854.             Reading: Denyall + ReadWrite (Truncate after read)
  855.  
  856.        ********************************************************** *)
  857.  
  858.         multimessagerecord = record
  859.             from           : userstring;
  860.             message        : string[80];
  861.             private        : boolean;
  862.         end;
  863.  
  864.     (* **********************************************************
  865.  
  866.        Filename:     <userbase>BESTSTAT.BBS
  867.  
  868.        Description:  Used by Ezycom to store best user stats
  869.  
  870.        Minimum Size: 0 Records (Maybe not present!)
  871.        Maximum Size: 200 Records
  872.  
  873.        ********************************************************** *)
  874.  
  875.         bestuserrecord     = record
  876.            bestname       : array[1..7] of userstring;
  877.            (* BestName[1] is for BestMessages
  878.               BestName[2] is for BestCalls
  879.               .....
  880.               BestName[7] is for BestDownK *)
  881.            bestmessages,
  882.            bestcalls,
  883.            bestups,
  884.            bestdns,
  885.            bestfps        : word;
  886.            bestupk,
  887.            bestdownk      : longint;
  888.         end;
  889.  
  890.     (* **********************************************************
  891.  
  892.        Filename:     <msgpath>\AREA<<area-1>/4+1>\MSGH<area>.BBS
  893.  
  894.        Description:  Used by Ezycom to store message text
  895.  
  896.        ********************************************************** *)
  897.  
  898.         msghdrrecord   = record
  899.            prevreply,
  900.            nextreply      : word;
  901.               (* 0 = No Reply Chain *)
  902.            startposition,
  903.               (* Physical Start Position in MSGT???.BBS *)
  904.            messagelength  : longint;
  905.              (* Message Length including Null Terminator *)
  906.            destzone,
  907.            destnet,
  908.            destnode,
  909.            destpoint,
  910.               (* V1.02 this will be DestNet *)
  911.            origzone,
  912.            orignet,
  913.            orignode,
  914.            origpoint,
  915.               (* V1.02 this will be OrigNet *)
  916.            cost           : word;
  917.            msgattr,
  918.               (*  Bit 0 : Deleted
  919.                       1 : Netmail pending export
  920.                       2 : [Reserved]
  921.                       3 : Private
  922.                       4 : Received
  923.                       5 : Echomail pending export
  924.                       6 : Locally generated msg
  925.                       7 : Do not kill message *)
  926.            netattr,
  927.               (*  Bit 0 : Kill/sent
  928.                       1 : Sent
  929.                       2 : File Attach
  930.                       3 : Crash
  931.                       4 : File Req
  932.                       5 : Request Receipt
  933.                       6 : Audit Request
  934.                       7 : Is a Return Receipt *)
  935.            extattr   : byte;
  936.               (*  Bit 0-7 [Reserved] *)
  937.            posttimedate : longint;
  938.               (* DOS Format Packed DateTime *)
  939.            recvtimedate : longint;
  940.               (* DOS Format Packed DateTime *)
  941.            whoto,
  942.            whofrom        : userstring;
  943.            subject        : string[72];
  944.         end;
  945.  
  946.     (* **********************************************************
  947.  
  948.        Filename:     <msgpath>\AREA<<area-1>/4+1>\MSGT<area>.BBS
  949.  
  950.        Description:  Used by Ezycom to store message text
  951.  
  952.        ********************************************************** *)
  953.  
  954.         (* Message Text
  955.  
  956.                 Each text part of the message starts at 'startposition',
  957.            and continues on until a NULL terminator is found, or end
  958.            of file is reached (shouldn't happen, but just in case).  The
  959.            message text length is limited by Turbo Pascal to 16 Meg
  960.            in size.  Each message is contained of plain text, with 0x08D
  961.            terminators for wrapped lines or 0x0D terminators for hard
  962.            carriage returns *)
  963.  
  964.     (* **********************************************************
  965.  
  966.        Filename:     <msgpath>MSGFAST.BBS
  967.  
  968.        Description:  Used by Ezycom for mail checks
  969.  
  970.        ********************************************************** *)
  971.  
  972.         msgfastrecord  = record
  973.            whoto     : longint;
  974.               (* standard 32 Bit CRC on whoto in MSGH???.BBS
  975.                  Username is CRCd in UPPERCASE, and does not
  976.                  include null terminator or "white space" *)
  977.            msgboard  : word;
  978.            msgnumber : word;
  979.         end;
  980.  
  981.     (* **********************************************************
  982.  
  983.        Filename:     <msgpath>MSGEXPRT.BBS
  984.  
  985.        Description:  Used by Ezycom to tell EzyNet/EzyMail whether
  986.                      an area needs scanning or not
  987.  
  988.        ********************************************************** *)
  989.  
  990.         needscan = boolean;
  991.  
  992.         needscanrecord = array[1..maxmess] of needscan;
  993.  
  994.  
  995.     (* **********************************************************
  996.  
  997.        Filename:     <systempath>MESSAGES.EZY
  998.  
  999.        Description:  Used by Ezycom to store message areas
  1000.  
  1001.        Size:         500 records
  1002.  
  1003.        ********************************************************** *)
  1004.  
  1005.         messagerecord  = record (* MESSAGES.EZY *)
  1006.            name           : string[30];
  1007.            areatag        : string[30];
  1008.            typ            : msgtype;
  1009.            msgkinds       : msgkindstype;
  1010.            attribute,
  1011.            (* Bit 0 : Allow Aliases
  1012.                   1 : Use Alias
  1013.                   2 : Use Alias, Ask for Aliases
  1014.                   3 : Test Age (use config age)
  1015.                   4 : Combined Area Access
  1016.                   5 : Local File attaches
  1017.                   6 : Keep Private Bit on Incoming EchoMail
  1018.                   7 : [Reserved] *)
  1019.            attribute2,
  1020.            (* Bit 0 : Show Seenby Lines
  1021.                   1 : [Reserved]
  1022.                   2 : Strip Forward Seenbys
  1023.                   3-4 [Reserved]
  1024.                   5 : Areafix Info Visible
  1025.                   6 : Initial Combined Area Access
  1026.                   7 : [Reserved] *)
  1027.            attribute3     : byte;
  1028.            dayskill,
  1029.            recvkill       : byte;
  1030.            countkill,
  1031.            kilobytekill,
  1032.            readsecurity   : word;
  1033.            readflags      : flagtype;
  1034.            writesecurity  : word;
  1035.            writeflags     : flagtype;
  1036.            sysopsecurity  : word;
  1037.            sysopflags     : flagtype;
  1038.            originline     : string[50];  (* Not in V1.02 *)
  1039.            originaddress  : byte;
  1040.            seenby         : array[1..maxaka div 8] of byte;
  1041.            areagroup,
  1042.            messgroup      : char;
  1043.            destnodes      : array[1..maxnodes div 8] of byte;
  1044.            (* Nodes  1 to  8 - DestNode[1]
  1045.               Nodes  9 to 16 - DestNode[2]
  1046.               Nodes 17 to 24 - DestNode[3]
  1047.               etc *)
  1048.            echomailfeed   : byte;
  1049.            (* 0=No Uplink *)
  1050.         end;
  1051.  
  1052.     (* **********************************************************
  1053.  
  1054.        Filename:     <systempath>ECHOMGR.EZY
  1055.  
  1056.        Description:  Used by Ezycom to store node information
  1057.  
  1058.        Size:         128 records
  1059.  
  1060.        ********************************************************** *)
  1061.  
  1062.         echomgrrecord = record
  1063.            destpoint,
  1064.            destnode,
  1065.            destnet,
  1066.            destzone : word;
  1067.               (* V1.02 this will be: destnet : netrecord *)
  1068.            groups   : string[26];
  1069.               (* V1.02 this will be: groups  : array[1..4] of byte *)
  1070.            compress : byte;
  1071.            (* 0 : Compress to ZIP
  1072.               1 : Compress to LZH
  1073.               2 : Compress to ARJ
  1074.               3 : Compress to ARC
  1075.               4 : Compress to PAK
  1076.               5 : Compress to ZOO
  1077.               6 : Compress to LZH (Using LHA Old method though) *)
  1078.            attribute   : byte;
  1079.            (* Bit 0 : Node Active
  1080.                   1 : Crash Mail
  1081.                   2 : Hold Mail
  1082.                   3 : Can Create New Echos
  1083.                   4 : Add to Export on New Echo
  1084.                   5-7 [Reserved] *)
  1085.            passwordto,
  1086.            passwordfr  : string[20];
  1087.            dayshold,
  1088.            sendpkttype : byte;
  1089.            (* 0 : Type 2
  1090.               1 : Type 2+
  1091.               2-255 [Reserved] *)
  1092.         end;
  1093.  
  1094.     (* **********************************************************
  1095.  
  1096.        Filename:     EVENTS.EZY (multinode file)
  1097.  
  1098.        Description:  Used by Ezycom to event information
  1099.  
  1100.        Minimum Size: 1 record
  1101.        Maximum Size: 65000 records
  1102.  
  1103.        ********************************************************** *)
  1104.  
  1105.  
  1106.         eventrecord = record
  1107.            attribute   : byte;
  1108.               (* Bit 0 = Enabled *)
  1109.            starttime   : word;
  1110.               (* Hi  Bit = Hour
  1111.                  Low Bit = Min *)
  1112.            errorlevel  : byte;
  1113.            days        : byte;
  1114.               (* Bit 0 : Sunday
  1115.                      1 : Monday
  1116.                          ...
  1117.                      6 : Saturday
  1118.                      7 : [ Reserved ] *)
  1119.            lasttimerun : word;
  1120.         end;
  1121.  
  1122.     (* **********************************************************
  1123.  
  1124.        Filename:    <systempath>TODAY.BBS
  1125.                     <systempath>YESTER.BBS
  1126.  
  1127.        Description: Used by Ezycom to today's/yesterday's callers
  1128.  
  1129.        ********************************************************** *)
  1130.  
  1131.        ontodayrecord = record
  1132.           line        : byte;
  1133.           name        : userstring;
  1134.           alias       : userstring;
  1135.           location    : string[25];
  1136.           baudrate    : word;
  1137.           logontime   : word;
  1138.           logofftime  : word;
  1139.           didwhat     : byte;
  1140.           (* Bit 0 : (N) NewUser
  1141.                  1 : (U) Upload
  1142.                  2 : (D) Download
  1143.                  3 : (R) Read Mail
  1144.                  4 : (S) Sent Mail
  1145.                  5 : (O) Outside
  1146.                  6 : (C) Chat
  1147.                  7 : (P) Paged *)
  1148.        end;
  1149.  
  1150.     (* **********************************************************
  1151.  
  1152.        Filename:    <systempath>TIME<node>.BBS
  1153.  
  1154.        Description: Used by Ezycom to store usage information
  1155.  
  1156.        ********************************************************** *)
  1157.  
  1158.        useagerecord  = record
  1159.           startdate      : word;
  1160.           busyperhour    : array[0..23] of longint; (* Minutes Used *)
  1161.           busyperday     : array[0..6]  of longint; (* Minutes Used *)
  1162.        end;
  1163.  
  1164.     (* **********************************************************
  1165.  
  1166.        Filename:    <systempath>MSGINFO.<node>
  1167.  
  1168.        Description: Used by Ezycom and EzyEdit to interface to
  1169.                     each other
  1170.  
  1171.        ********************************************************** *)
  1172.  
  1173.        fserecord      = record       (* MSGINFO.<node> *)
  1174.           whofrom      : userstring; (* User Who wrote message *)
  1175.           orignet      : netrecord;  (* From Net Address *)
  1176.           whoto        : userstring; (* User Who message is to *)
  1177.           destnet      : netrecord;  (* To Net Address *)
  1178.           subject      : string[72]; (* Subject of message *)
  1179.           returnstatus : byte;       (* Return Status *)
  1180.           (*   0 : FSE Record Not Used
  1181.                1 : Message Saved
  1182.                2 : Message Aborted
  1183.                3 : User  Inactivity
  1184.                4 : User  Hungup
  1185.                5 : Sysop Hungup
  1186.            6-255 : Reserved *)
  1187.           attribute    : byte;
  1188.           (*   Bit 0 : Can Change Subject
  1189.                    1 : Can Change Whoto
  1190.                    2 : Can Change Private
  1191.                    3 : Private Message
  1192.                    4 : Is Message Forwarded (False = Quoted)
  1193.                        (Providing MSGTMP.<node> exists)
  1194.                    5 : Netmail Message
  1195.                    6 : [Reserved]
  1196.                    7 : EchoMail Message *)
  1197.        end;
  1198.  
  1199.  
  1200.  
  1201.     (* **********************************************************
  1202.  
  1203.        Filename:    <msgbasepath>MSGRSCAN.BBS
  1204.  
  1205.        Description: Used by EzyNet and EzyMail for Rescanning a
  1206.                     Message Area for a particular node
  1207.  
  1208.        ********************************************************** *)
  1209.  
  1210.        rescanrecord = record
  1211.           nodetorescan : byte;
  1212.           msgboard     : word;
  1213.        end;
  1214.  
  1215.     (* **********************************************************
  1216.  
  1217.        Filename:    <msgbasepath>MSGSTATS.BBS
  1218.  
  1219.        Description: Written by EzyMail for echomail statistics
  1220.  
  1221.        ********************************************************** *)
  1222.  
  1223.        msgstatsrecord = record
  1224.           tossedboard  : array[1..maxmessall]  of word;
  1225.              (* Number of Messages Tossed to Msg Board *)
  1226.           scannedboard : array[1..maxmessall]  of word;
  1227.              (* Number of Messages Tossed to Msg Board *)
  1228.           tossednode   : array[1..maxnodes] of longint;
  1229.              (* Number of Messages Tossed to EchoArea Node *)
  1230.        end;
  1231.  
  1232.     (* **********************************************************
  1233.  
  1234.        Filename:    <systempath>EXITINFO.<node>
  1235.  
  1236.        Description: Used by Ezycom in Type 15 exits to return
  1237.                     Used by Ezycom in Type 7 exits for door
  1238.                        information
  1239.  
  1240.        Future:      In V1.02 totally new structure as "userextra"
  1241.                        is increasing in size
  1242.  
  1243.        ********************************************************** *)
  1244.  
  1245.        exitinforecord = record
  1246.           baud           : word; (* Speed between Modem/Modem *)
  1247.           lockedbaud     : word; (* Speed between Computer/Modem *)
  1248.           comport        : byte; (* Comport 1 = Com1, etc *)
  1249.           efficiency     : word; (* Baud Rate efficiency *)
  1250.           userrecord     : word; (* User Record Number (0=User1) *)
  1251.           userinfo       : usersrecord;
  1252.           userextra      : usersextrarecord;
  1253.           sysopname,             (* Sysop's Name *)
  1254.           sysopalias     : userstring;
  1255.           system         : string[40];
  1256.           downloadlimit  : word; (* Maximum Download Limit *)
  1257.           timelimit      : word; (* Daily Time Limit *)
  1258.           timetakenevent : word;
  1259.              (* Number of Minutes Taken from User for Event *)
  1260.           timecreated    : longint;
  1261.              (* Number of Seconds since Midnight *)
  1262.           timeofnextevent   : longint;
  1263.              (* Number of Seconds since Midnight *)
  1264.           timetillnextevent : longint;
  1265.              (* Number of Seconds after Time Created *)
  1266.           dayofnextevent : byte;
  1267.              (* 0 = Sunday
  1268.                 ..........
  1269.                 6 = Saturday
  1270.                 7 = NOEVENT *)
  1271.           errorlevelofnextevent : byte;
  1272.              (* Errorlevel to return from next event *)
  1273.           ratio          : byte; (* File Ratio *)
  1274.           credit         : word; (* File Ratio Credit *)
  1275.           ratiok         : byte; (* Kilobyte Ratio *)
  1276.           creditk        : word; (* Kilobyte Ratio Credit *)
  1277.           regodays       : word; (* Registration Days *)
  1278.           creditmess     : word; (* Post Call Ratio Credit *)
  1279.           mess           : word; (* Post Call Ratio *)
  1280.           logintimedate  : datetime; (* Login Datetime *)
  1281.           stack          : array[1..20] of str8; (* Menu Stack *)
  1282.           stackpos       : byte; (* Menu Stack Position (0 = No Stack) *)
  1283.           curmenu        : str8; (* Current Menu *)
  1284.           oldpassword    : string[15];
  1285.           limitrecnum    : word; (* Limits Record Being Used *)
  1286.           baudrecnum     : byte; (* BaudRate Record Being Used *)
  1287.           hibitreplace   : char; (* Hi-Bit Replacement Character *)
  1288.           maxpages       : byte; (* Maximum Pages *)
  1289.           pagedsysop     : byte; (* Number of Times User has Paged Sysop *)
  1290.           wantchat       : boolean;
  1291.           pagestart,
  1292.           pageend        : longint; (* Number of Seconds since Midnight *)
  1293.           pagelength     : byte; (* Page Length *)
  1294.           echoentered,
  1295.           netentered,
  1296.           nextsysop      : boolean;
  1297.           inactivitytime : word; (* Seconds *)
  1298.           protrecnum     : byte;
  1299.              (* Default Protocol Record Number 0=NoDefault *)
  1300.           protname       : string[15]; (* Default Protocol Name *)
  1301.           didwhat        : byte; (* Didwhat flag for Todays Callers *)
  1302.           pagereason     : string[60];
  1303.           mtasker        : byte;
  1304.           iemsi_session  : boolean;
  1305.           iemsi_req1,
  1306.              (* Bit 0 = News
  1307.                     1 = Mail
  1308.                     2 = File
  1309.                     3 = Clrscr
  1310.                     4 = Quiet
  1311.                     5 = More
  1312.                     6 = FSE
  1313.                     7 = [Reserved] *)
  1314.           iemsi_req2,
  1315.              (* Bit 0-7 = [Reserved] *)
  1316.           iemsi_scrlen   : byte;
  1317.              (* Screen Length for current session
  1318.                 If NOIEMSI session, this is set to the
  1319.                    users screen length *)
  1320.           iemsi_prot,
  1321.              (* Bit 0 = ZModem
  1322.                     1 = SEAlink
  1323.                     2 = Kermit *)
  1324.           iemsi_crt,
  1325.              (* 0 = TTY
  1326.                 1 = ANSI
  1327.                 2 = AVT0+
  1328.                 3 = VT100
  1329.                 4 = VT52 *)
  1330.           iemsi_cap      : byte;
  1331.              (* Bit 0 = CHT
  1332.                     1 = MNU
  1333.                     2 = TAB
  1334.                     3 = ASCII8 *)
  1335.           pagesound      : boolean;
  1336.           freespace      : array[1..99] of byte;
  1337.        end;
  1338.  
  1339.        sysinforecord = record
  1340.           callcount      : longint;
  1341.           lastcaller     : userstring;
  1342.           filessizek     : longint; (* Updated by Ezyff -C *)
  1343.           newusers,
  1344.           newfiles,
  1345.           newmessages    : word;    (* Does NOT include Inbound Echomail *)
  1346.           lastalias      : userstring;
  1347.           laststarttime  : word;
  1348.           extraspace     : array[1..80] of byte;
  1349.        end;
  1350.  
  1351.  
  1352.  
  1353. const
  1354.     fnoinherit = 128;  {      No Interitence Flag }
  1355.     fdenyall   = 16;   {      These are MUTUALLY EXCLUSIVE!!!!   }
  1356.     fdenywrite = 32;   {      Only ONE of THESE SHOULD BE USED   }
  1357.     fdenynone  = 64;   {                                         }
  1358.     fdenyread  = 48;   {                                         }
  1359.     freadonly  = 0;               {     THESE ALSO!!!  }
  1360.     fwriteonly = 1;               {                    }
  1361.     freadwrite = 2;               {                    }
  1362.  
  1363. (*
  1364.  
  1365. *****************************
  1366. Sample PASCAL Source Code for
  1367. location of CONFIG, and
  1368. for date conversion.
  1369. *****************************
  1370.  
  1371. **************************
  1372. Returns True if file found
  1373. **************************
  1374.  
  1375. function find(path : maxstr) : boolean;
  1376.  
  1377. var
  1378.    srec : searchrec;
  1379.  
  1380. begin
  1381.    findfirst(path,anyfile,srec);
  1382.    if doserror = 0
  1383.       then find := true
  1384.       else find := false;
  1385. end;
  1386.  
  1387. ****************************************************
  1388. Returns the path of where to find CONFIG
  1389.  
  1390. ie  findw("CONFIG") would return the path of where
  1391. it can be found.  An additionial FIND should be done
  1392. on the result, as there may not be a CONFIG in the
  1393. system dir.
  1394.  
  1395. itos(x : longint) is simply a function that returns
  1396. the number in a string format.
  1397.  
  1398. node is the variable containing the current node
  1399.  
  1400. systempath is the path where the environment variable
  1401. EZY points to.  If not present, it is the current
  1402. directory on start up.
  1403.  
  1404. ****************************************************
  1405.  
  1406.  
  1407. function findw(s : maxstr) : maxstr;
  1408.  
  1409. begin
  1410.    if find(systempath + s + '.' + itos(node)) then
  1411.       findw := systempath + s + '.' + itos(node) else
  1412.       if find(s + '.EZY') then
  1413.          findw := s + '.EZY' else
  1414.             findw := systempath + s + '.EZY';
  1415. end;
  1416.  
  1417. ***********************
  1418. Checks for a valid date
  1419. ***********************
  1420.  
  1421. function checkdate(yy,mm,dd : word) : boolean;
  1422.  
  1423. const
  1424.    daysinmonth : array[1..12] of word =
  1425.       (31,29,31,30,31,30,31,31,30,31,30,31);
  1426.  
  1427. begin
  1428.    if (mm < 1) or (mm > 12) then
  1429.       begin
  1430.          checkdate := false;
  1431.          exit;
  1432.       end;
  1433.    if (dd < 1) or (dd > daysinmonth[mm]) then
  1434.       begin
  1435.          checkdate := false;
  1436.          exit;
  1437.       end;
  1438.    if (yy < 1900) then
  1439.       begin
  1440.          checkdate := false;
  1441.          exit;
  1442.       end;
  1443.    if ((yy mod 4 <> 0) and (dd = 29) and (mm=2)) then
  1444.       checkdate := false else
  1445.       checkdate := true;
  1446. end;
  1447.  
  1448. ***********************
  1449. Converts a Date to Word
  1450. ***********************
  1451.  
  1452. function datetoword(yy,mm,dd : word) : word;
  1453.  
  1454. var
  1455.    tofield        : word;
  1456.    tempbyte       : byte;
  1457.  
  1458. begin
  1459.    if not checkdate(yy,mm,dd) then
  1460.       begin
  1461.          datetoword := 65535;
  1462.          exit;
  1463.       end;
  1464.    tofield := dd - 1;
  1465.    tofield := tofield + ((mm - 1) shl 5);
  1466.    if (yy < 1980) or (yy > (1980 + 127)) then
  1467.       begin
  1468.          datetoword := 65535;
  1469.          exit;
  1470.       end;
  1471.    yy := yy - 1980;
  1472.    tofield := tofield + (yy shl 9);
  1473.    datetoword := tofield;
  1474. end;
  1475.  
  1476. ***********************************
  1477. Converts a Word to a DATE
  1478.  
  1479. If date is ok then true is returned
  1480. ***********************************
  1481.  
  1482. function wordtodate(temp : word;var yy,mm,dd : word) : boolean;
  1483.  
  1484. begin
  1485.    if (temp = 65535) then
  1486.       begin
  1487.          wordtodate := false;
  1488.          exit;
  1489.       end else
  1490.       wordtodate := true;
  1491.    dd   := temp and 31 + 1;
  1492.    temp := temp shr 5;
  1493.    mm   := temp and 15 + 1;
  1494.    temp := temp shr 4;
  1495.    yy   := (temp and 127) + 1980;
  1496. end;
  1497.  
  1498. *)
  1499.