home *** CD-ROM | disk | FTP | other *** search
/ Jason Aller Floppy Collection / 270.img / FORUM25C.ZIP / GENTYPES.PAS < prev    next >
Pascal/Delphi Source File  |  1989-02-11  |  13KB  |  522 lines

  1. {$R-,S-,I-,V-,B-,N-,L- }
  2.  
  3. unit gentypes;
  4.  
  5.  
  6. {/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\}
  7.  
  8. interface
  9.  
  10. USES Overlay,
  11.      dos;
  12.  
  13. {/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\}
  14.  
  15.  
  16. CONST Versionnum      : string[20] = 'Forum-PC 2.5c';
  17.       thisversioncode = 1;
  18.       Title_delay     = 250;       { 250 for normal, 5000 for demo}
  19.       maxusers        = 30000;     { Change to 10 For Demo }
  20.       maxmessagesize  = 100;
  21.       maxlastcallers  = 20;
  22.       maxtopics       = 10;
  23.       maxcats         = 10;
  24.       sectorsize      = 512;
  25.       numsectors      = 10000;
  26.       maxcatalogsize  = 50;
  27.       maxgroupsize    = 50;
  28.       maxsyslogdat    = 125;
  29.       maxsyslogsize   = 1000;
  30.       MaxTopPosters   = 10;
  31.       e_door          = 3;
  32.       e_controlbreak  = 9;
  33.       e_Extended_code = 12;
  34.  
  35. { All of these are extEnded keystroke values. }
  36.       breakoutchar     = 0;   {Control-Break}
  37.       chatchar         = 59;  {F1}
  38.       sysopcomchar     = 60;  {F2}
  39.       sysnextchar      = 65;  {F7}
  40.       timelockchar     = 66;  {F8}
  41.       inlockchar       = 67;  {F9}
  42.       outlockchar      = 68;  {F10}
  43.       printerechochar  = 114; {Ctrl-PrtSc}
  44.       availtogglechar  = 30;  {Alt-A}
  45.       bottomchar       = 48;  {Alt-B}
  46.       texttrapchar     = 18;  {Alt-E}
  47.       sysophelpchar    = 35;  {Alt-H}
  48.       notimechar       = 37;  {Alt-K}
  49.       lesstimechar     = 38;  {Alt-L}
  50.       moretimechar     = 50;  {Alt-M}
  51.       tempsysopchar    = 20;  {Alt-T}
  52.       viewstatchar     = 47;  {Alt-S}
  53.  
  54. TYPE anystr = string[255];
  55.      lstr   = string[80];
  56.      mstr   = string[30];
  57.      sstr   = string[15];
  58.  
  59.      accesstype = (bylevel,keepout,letin,invalid);
  60.      availtype  = (available,bytime,notavailable);
  61.      configtype = (lowercase,eightycols,linefeeds,postprompts,
  62.                    moreprompts,asciigraphics,ansigraphics,udsysop,
  63.                    bulletinsysop,votingsysop,emailsysop,doorssysop,
  64.                    mainsysop,databasesysop,wanted,showtime,vt52,
  65.                    fseditor,ExtClrScr);
  66.      groupclass = (publicgroup,privategroup,personalgroup);
  67.      voteset    = array [1..maxtopics] of byte;
  68.      boardorder = array [0..255] of byte;
  69.  
  70. TYPE userrec = RECORD
  71.                   handle           : mstr;
  72.                   password         : sstr;
  73.                   phonenum         : string[10];
  74.                   laston           : longint;
  75.                   numon,
  76.                   timetoday,
  77.                   nup,
  78.                   ndn,
  79.                   nbu,
  80.                   uploads,
  81.                   downloads        : integer;
  82.                   totaltime        : real;
  83.                   voted            : voteset;
  84.                   udlevel,
  85.                   udpoints,
  86.                   level,
  87.                   emailannounce,
  88.                   beepedpwd,
  89.                   infoform         : integer;
  90.                   regularcolor,
  91.                   promptcolor,
  92.                   statcolor,
  93.                   inputcolor,
  94.                   displaylen       : byte;
  95.                   config           : set of configtype;
  96.                   newscanconfig,
  97.                   access1,
  98.                   access2          : set of byte;
  99.                   lastread         : array [0..255] of word
  100.                 End;
  101.  
  102.      userspecsrec = RECORD
  103.        name         : mstr;
  104.        minlevel,
  105.        maxlevel,
  106.        minlaston,
  107.        maxlaston    : integer;
  108.        minpcr,
  109.        maxpcr       : real
  110.      End;
  111.  
  112.      boardrec = RECORD
  113.        boardname,
  114.        sponsor      : mstr;
  115.        level,
  116.        autodel      : integer;
  117.        shortname    : sstr
  118.      End;
  119.  
  120.      bulrec = RECORD
  121.        title,
  122.        leftby       : mstr;
  123.        when         : longint;
  124.        anon         : boolean;
  125.        line,
  126.        plevel       : integer;
  127.        id           : word
  128.      End;
  129.  
  130.      filerec = RECORD
  131.        descrip,
  132.        fname         : lstr;
  133.        sentby        : mstr;
  134.        when          : longint;
  135.        downloaded    : integer
  136.      End;
  137.  
  138.      mailrec = RECORD
  139.        title       : Mstr;
  140.        sentby      : INTEGER;
  141.        when        : longint;
  142.        anon,
  143.        read        : boolean;
  144.        sentto,
  145.        line,
  146.        fileindex   : integer;
  147.        AnonPost    : BOOLEAN;
  148.      End;
  149.  
  150.      abrec = RECORD
  151.        title,
  152.        fname      : lstr;
  153.        level      : integer;
  154.        when       : longint
  155.      End;
  156.  
  157.      catalogrec = RECORD
  158.        nummail,
  159.        additional   : integer;
  160.        mail         : array [1..maxcatalogsize] of mailrec
  161.      End;
  162.  
  163.      grouprec = RECORD
  164.        name         : mstr;
  165.        class        : groupclass;
  166.        creator,
  167.        nummembers   : integer;
  168.        members      : array [1..maxgroupsize] of integer
  169.      End;
  170.  
  171.      message = RECORD
  172.        text        : array [1..maxmessagesize] of lstr;
  173.        title       : mstr;
  174.        anon        : boolean;
  175.        numlines    : integer
  176.      End;
  177.  
  178.      topicrec = RECORD
  179.        topicname      : lstr;
  180.        numvoted,
  181.        addlevel       : integer;
  182.        mandatory      : boolean
  183.      End;
  184.  
  185.      choicerec = RECORD
  186.        choice     : lstr;
  187.        numvoted   : integer
  188.      End;
  189.  
  190.      lastrec = RECORD
  191.        name      : mstr;
  192.        callnum   : longint;
  193.        when      : longint
  194.      End;
  195.  
  196.      buffer = array [1..sectorsize] of char;
  197.  
  198.      baserec = RECORD
  199.        numcats,
  200.        numents,
  201.        level      : integer;
  202.        basename   : mstr;
  203.        catnames   : anystr
  204.      End;
  205.  
  206.      entryrec = RECORD
  207.        data      : anystr;
  208.        when      : longint;
  209.        addedby   : integer
  210.      End;
  211.  
  212.      parsedentry = array [1..maxcats] of anystr;
  213.  
  214.      udrec = RECORD
  215.        sentby        : mstr;
  216.        when,
  217.        whenrated     : longint;
  218.        filename      : sstr;
  219.        path          : string[50];
  220.        points        : integer;
  221.        filesize      : longint;
  222.        descrip       : lstr;
  223.        downloaded    : integer;
  224.        newfile,
  225.        specialfile   : boolean
  226.      End;
  227.  
  228.      arearec = RECORD
  229.        name,
  230.        xmodemdir   : lstr;
  231.        sponsor     : mstr;
  232.        level       : integer
  233.      End;
  234.  
  235.      windowrec = RECORD
  236.        x1, y1, x2, y2,
  237.        cx, cy, color     : byte
  238.      End;
  239.  
  240.      fib = textrec;
  241.  
  242.      doorrec = RECORD
  243.        name        : mstr;
  244.        level,
  245.        numused,
  246.        info        : integer;
  247.        batchname   : lstr;
  248.        getparams   : boolean;
  249.      End;
  250.  
  251.      minuterec = RECORD
  252.        started     : boolean;
  253.        startedat   : integer;
  254.        total       : real
  255.      End;
  256.  
  257.      logrec = RECORD
  258.        menu,
  259.        subcommand   : integer;
  260.        param        : string[41];
  261.        when         : longint
  262.      End;
  263.  
  264.      syslogdatrec = RECORD
  265.        menu,
  266.        subcommand   : integer;
  267.        text         : mstr
  268.      End;
  269.  
  270.      baudratetype = (b110,b300,b450,b600,b1200,b2400,b4800,b9600);
  271.      baudset      = set of baudratetype;
  272.  
  273. CONST baudarray   : array [b110..b9600] of integer = 
  274.                     (110,300,450,600,1200,2400,4800,9600);
  275.  
  276. CONST firstbaud = b110;
  277.       lastbaud  = b9600;
  278.  
  279. {===  CONFIGRT.PAS  Types and vars   === }
  280.  
  281.  
  282. VAR versioncode   : byte;
  283.     longname,
  284.     shortname,
  285.     sysopname,
  286.     forumdir,
  287.     textdir,
  288.     uploaddir,
  289.     boarddir,
  290.     overlaypath,
  291.     asciidownload,
  292.     textfiledir,
  293.     doordir,
  294.     modemsetupstr,
  295.     modemhangupstr,
  296.     modemdialprefix,
  297.     modemdialsuffix    : lstr;
  298.     defbaudrate,
  299.     usecom,
  300.     anonymouslevel,
  301.     numwelcomes,
  302.     mintimeout,
  303.     sysoplevel,
  304.     defudlevel,
  305.     defudpoints,
  306.     normbotcolor,
  307.     normtopcolor,
  308.     outlockcolor,
  309.     splitcolor,
  310.     statlinecolor,
  311.     uploadfactor   : integer;
  312.     private,
  313.     autologin,
  314.     useconmode,
  315.     escinmsgs,
  316.     bkspinmsgs,
  317.     requireforms   : boolean;
  318.     dotchar        : char;
  319.     supportedrates,
  320.     downloadrates     : baudset;
  321.     availtime,
  322.     unavailtime,
  323.     xmodemopentime,
  324.     xmodemclosetime   : sstr;
  325.     usertime          : array [1..100] of integer;
  326.     level2nd,
  327.     udlevel2nd,
  328.     udpoints2nd,
  329.     postlevel          : integer;
  330.     anonymousstr,
  331.     systempassword     : mstr;
  332.     remotedoors,
  333.     allowdoors         : boolean;
  334.     eventtime,
  335.     eventbatch         : sstr;
  336.     directvideomode,
  337.     checksnowmode      : boolean;
  338.     NewUserLevel       : INTEGER;
  339.     Overlay_size       : INTEGER;
  340.     Keep_Top_ten       : BOOLEAN;
  341.     User_name_prompt   : LStr;
  342.     MaxLoginTries      : INTEGER;
  343.     DataBaseLevel      : INTEGER;
  344.     VotingLevel        : INTEGER;
  345.     FileLevel          : INTEGER;
  346.     EmailLevel         : INTEGER;
  347.     BulletinLevel      : INTEGER;
  348.     AboutLevel         : INTEGER;
  349.     filler             : ARRAY[1..400] OF BYTE;
  350.  
  351. TYPE Configsettype = ARRAY[1..2048] OF CHAR;
  352. VAR configset : configsettype Absolute versioncode;
  353.  
  354. {=====  SUBS1.PAS  Types and Vars  =====}
  355.  
  356. VAR firstvariable : byte;
  357.  
  358.     local,
  359.     online,
  360.     chatmode,
  361.     disconnected  : boolean;
  362.  
  363.     unum,
  364.     ulvl,
  365.     baudrate      : integer;
  366.     unam          : mstr;
  367.     baudstr       : sstr;
  368.     parity        : boolean;
  369.     urec          : userrec;
  370.  
  371.     logontime,
  372.     logofftime,
  373.     logonunum     : integer;
  374.     laston        : longint;
  375.  
  376.     dots,
  377.     nochain,
  378.     break,
  379.     xpressed,
  380.     requestbreak,
  381.     forcehangup,
  382.     modeminlock,
  383.     modemoutlock,
  384.     timelock,
  385.     tempsysop,
  386.     splitmode,
  387.     fromdoor,
  388.     texttrap,
  389.     printerecho,
  390.     uselinefeeds,
  391.     usecapsonly,
  392.     dontstop,
  393.     nobreak,
  394.     wordwrap,
  395.     beginwithspacesok,
  396.     sysnext,
  397.     ingetstr           : boolean;
  398.     regularlevel,
  399.     numusers,
  400.     curboardnum,
  401.     lasty,
  402.     linecount,
  403.     curattrib,
  404.     firstfree,
  405.     lockedtime,
  406.     iocode,
  407.     buflen             : integer;
  408.     screenseg          : word;
  409.     cursection         : configtype;
  410.     curboardname       : sstr;
  411.     input,
  412.     chainstr           : anystr;
  413.     chatreason,
  414.     lastprompt,
  415.     errorparam,
  416.     errorproc          : lstr;
  417.     curboard           : boardrec;
  418.     syslogdat          : array [0..maxsyslogdat] of syslogdatrec;
  419.     numsyslogdat       : integer;
  420.     returnto           : char;
  421.  
  422.     LastVariable       : BYTE;
  423.  
  424.     usr,
  425.     direct,
  426.     directin           : text;
  427.  
  428. const numsysfiles = 19;
  429. VAR
  430.     tfile      : file of buffer;
  431.     mapfile    : file of integer;
  432.     ufile      : file of userrec;
  433.     mfile      : file of mailrec;
  434.     udfile     : file of udrec;
  435.     afile      : file of arearec;
  436.     bfile      : file of bulrec;
  437.     bdfile     : file of boardrec;
  438.     bifile     : file of sstr;
  439.     ffile      : file of filerec;
  440.     tofile     : file of topicrec;
  441.     chfile     : file of choicerec;
  442.     ddfile     : file of baserec;
  443.     efile      : file of entryrec;
  444.     dofile     : file of doorrec;
  445.     gfile      : file of grouprec;
  446.     logfile    : file of logrec;
  447.     abfile     : file of abrec;
  448.     usfile     : file of userspecsrec;
  449.     sysfiles   : array [1..numsysfiles] of file absolute tfile;
  450.     ttfile     : text;
  451.  
  452.  
  453.  
  454. TYPE Chat_Procedure_type = Procedure;
  455.      Command_Procedure_type = Procedure;
  456.  
  457.      Top_poster_Rec = RECORD
  458.                          User_name : Mstr;
  459.                          Num_posts : WORD;
  460.                        End;
  461.  
  462.      Top_poster_type = ARRAY[1..MaxTopPosters] OF Top_poster_rec;
  463.  
  464. VAR Chat_proc     : Chat_Procedure_type;
  465.     Command_proc  : Command_Procedure_type;
  466.     InChat        : BOOLEAN;
  467.     Ext_code      : SHORTINT;
  468.     Top_Post_file : FILE OF Top_poster_type;
  469.  
  470. {/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\}
  471.  
  472. implementation
  473.  
  474. {/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\}
  475.  
  476.  
  477. {/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\}
  478.  
  479. {initialization}
  480.  
  481. {/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\}
  482.  
  483. VAR Save_exit : POINTER;
  484.  
  485. {$F+}
  486. Procedure Error_handler;
  487. VAR Error_str : Lstr;
  488. Begin
  489.   ExitProc := Save_exit;
  490.   If ExitCode = e_Extended_code  THEN
  491.     Begin
  492.       Case Ext_code OF
  493.         -1 : Writeln(USR,'Overlay manager error');
  494.         -2 : Begin
  495.               Writeln(USR,'Overlay file not found');
  496.              End;
  497.          1 : Begin
  498.                writeln (USR,'The modem driver is not installed!  Please run the',
  499.                         'program'^M^J^M^J'    MODEMDRV.COM'^M^J^M^J,
  500.                         'and run Forum-PC again.');
  501.                ExitCode := 2;
  502.              End;
  503.          2 : Begin
  504.                writeln (USR,^M^J'Fatal error:  You MUST put the command',
  505.                ^M^J^J'   FILES=30',
  506.                ^M^J^J'in your CONFIG.SYS file on the disk from which you boot.',
  507.                ^M^J^J'Note:  If you have been modifying Forum-PC, then you may',
  508.                 ^M^J'       be leaving a file open.');;
  509.              End;
  510.         End;
  511.     End;
  512. End;
  513.  
  514. Begin
  515.   DataBaseLevel      := 0;
  516.   VotingLevel        := 0;
  517.   FileLevel          := 0;
  518.   EmailLevel         := 0;
  519.   BulletinLevel      := 0;
  520.   AboutLevel         := 0;
  521. End.
  522.