home *** CD-ROM | disk | FTP | other *** search
/ Jason Aller Floppy Collection / 153.img / TELES.ZIP / UNIT1.PAS < prev    next >
Pascal/Delphi Source File  |  1988-07-25  |  37KB  |  1,020 lines

  1. {$R-}    {Range checking off}
  2. {$B+}    {Boolean complete evaluation on}
  3. {$S+}    {Stack checking on}
  4. {$I+}    {I/O checking on}
  5. {$N-}    {No numeric coprocessor}
  6. {$V-}
  7.  
  8. Unit Unit1; {Part2 renamed to Unit 1 for sanity's sake}
  9.  
  10. Interface
  11.  
  12. Uses
  13.   Crt,
  14.   Dos,
  15.   Common,
  16.   Unit0,
  17.   UnitX;
  18.  
  19. procedure readmail;
  20. procedure newuser;
  21. function getuser:boolean;
  22. procedure vote;
  23. function logon:boolean;
  24. procedure reqchat(xx:integer);
  25. procedure abbs;
  26. procedure yourinfo;
  27. procedure prg(x:boolean);
  28. procedure removem;
  29. procedure boardlist(z:astr);
  30. procedure delmail;
  31. procedure gfiles;
  32. procedure chpw;
  33. procedure mmacro;
  34. procedure logoff;
  35. procedure endday;
  36. procedure smail(tf:boolean);
  37. procedure ulist;
  38. procedure pver;
  39.  
  40. Implementation
  41.  
  42. Var
  43.   Wantnewuser:boolean;
  44.  
  45. procedure readmail;
  46. var lame,in1,i,i1,mc,x,nmf:integer; c:char; abort,next:boolean; mr:mailrec; a:boolean;
  47.   filevar:file; ii,is:astr; No_Read:Boolean; sw:integer;
  48. begin
  49.   No_Read:=False; readingmail:=true;
  50.   nl;
  51.   if thisuser.waiting=0 then print('You have no mail.') else begin
  52.     reset(mailfile);
  53.     if thisuser.waiting>0 then begin
  54.       reset(uf);nl;
  55.       cl(5); Prompt('You have '); cl(3); prompt(cstr(thisuser.waiting));
  56.       cl(5); prompt(' piece'); if thisuser.waiting>1 then prompt('s');
  57.       prompt(' of mail waiting.'); nl; nl; mc:=0;
  58.       i:=0; i1:=1; while (i<filesize(mailfile)) and not hangup do begin
  59.         seek(mailfile,i); read(mailfile,mr); if mr.destin=usernum then
  60.          if (mr.from<=0) and not (emailn in seclev[thisuser.sl].anst)
  61.           then begin print(cstr(i1)+' - <[ANONYMOUS]>'); mc:=mc+1; end else begin
  62.           seek(uf,abs(mr.from)); read(uf,user); cl(0); if i1<10 then prompt(' '); prompt(cstr(i1));
  63.           cl(7);prompt(' - ');cl(3);prompt(user.name);cl(2);
  64.           prompt(' #');cl(4);print(cstr(abs(mr.from)));
  65.            i1:=i1+1; mc:=mc+1;
  66.         end;
  67.         i:=i+1;
  68.       end;
  69.       close(uf);nl;nl;
  70.       cl(5); prompt('Enter #, <CR>, or <Q>uit : '); cl(9);
  71.       input(ii,2);nl;nl;if (ii<>'') and (ii<>'Q') then sw:=value(ii) else sw:=0;
  72.       if ii='Q' then No_Read:=True;
  73.       thisuser.waiting:=mc; if usernum=1 then fw:=mc;
  74.       {if sw=1 then sw:=0;} if sw<>0 then sw:=sw-1;
  75.     end;
  76.     i:=0; nmf:=0;
  77.     repeat
  78.       abort:=false;
  79.       if i<=filesize(mailfile)-1 then begin seek(mailfile,i); read(mailfile,mr); end;
  80.       while (i<filesize(mailfile)-1) and (mr.destin<>usernum) do begin
  81.         i:=i+1; seek(mailfile,i); read(mailfile,mr);
  82.       end;
  83.       if (mr.destin=usernum) and (i<=filesize(mailfile)-1) then begin
  84.       {if sw<>0 then if (sw<=thisuser.waiting) then nmf:=sw;}
  85.       nmf:=nmf+1;
  86.       if No_Read=false then
  87.       repeat
  88.         a:=false; if emailn in seclev[thisuser.sl].anst then a:=true;
  89.         irt:='Your previous letter';
  90.         if sw=0 then begin
  91.         nl; if mr.title<>'' then begin
  92.         if systat.clearmsg then cls;
  93.         prompt('  Title: ');cl(3);print(mr.title);end; irt:=mr.title;
  94.         if irt='' then irt:='Your previous letter';
  95.         readmsg(mr.msg,a,next); next:=false;
  96.         end;
  97.         tleft;
  98.         repeat
  99. {          if (sw<>0) and (sw<>nmf) then next:=true;
  100.           if (sw<>0) and (sw=nmf) then sw:=0;}
  101.           if sw=0 then begin
  102.           nl; prt('Mail (D,I,R,A,Q,?) :');
  103.           onek(c,'?DIRAQ');
  104.           end;
  105.           if sw<>0 then c:='I';
  106.           case c of
  107.             'I':next:=true;
  108.             '?':begin
  109.                   cl(3); prompt('D');
  110.                   cl(1); prompt(':elete');
  111.                   cl(3); prompt('     I'); cl(1); print(':gnore');
  112.                   cl(3); prompt('R'); cl(1); prompt(':e-read    ');
  113.                   cl(3); prompt('A');cl(1);print(':uto-reply');
  114.                   cl(9); prompt('Q'); cl(1); print(':uit Mail');
  115.                 end;
  116.             'Q':Begin nmf:=nmf+((thisuser.waiting)-nmf); No_Read:=True; end;
  117.             'A','D':begin
  118.                       ssm(abs(mr.from),nam+' read your letter on '+date);
  119.                       is:=rmail(i); next:=true; nmf:=nmf-1;
  120.                       thisuser.waiting:=thisuser.waiting-1;
  121.                       topscr;
  122.                     end;
  123.           end;
  124.           if c='A' then begin
  125.             in1:=thisuser.waiting;
  126.             close(mailfile); autoreply; reset(mailfile);
  127.             nmf:=nmf+thisuser.waiting-in1;
  128.           end;
  129.           if sw=nmf then sw:=0;
  130.         until (C IN ['D','I','R','A','Q']) or (No_Read) or hangup;
  131.       until (No_Read) or (next) or hangup;
  132.      {If No_Read=true then I:=(filesize(mailfile)-2);}
  133.       i:=i+1;
  134.     end else i:=i+1;
  135.     until (i>filesize(mailfile)-1) or (No_Read) or hangup;
  136.     if No_read Then I:=filesize(mailfile);
  137.     close(mailfile); if not hangup then thisuser.waiting:=nmf;
  138.   end;
  139.   readingmail:=false;
  140. end;
  141.  
  142. procedure newuser;
  143. var n:integer;
  144. begin
  145.   sl1('');
  146.   sl1(#3+#8+'*** '+#3+#3+'New User '+#3+#8+'*** '+#3+#1+'at '+time+' '+date+' Baud Rate: '+spd);
  147.   if systat.users>=maxusers then begin
  148.     printf(systat.gfilepath+'maximum.msg');
  149.     hangup:=true;
  150.   end else begin
  151.     p1;
  152.     reset(uf); n:=forwardm(1); close(uf);
  153.     if (p2) and (systat.app) then email(n,true);
  154.   end;
  155.   if systat.matrix then begin cls; cl(0); print('End of Connection.'); hangup:=true; end;
  156. end;
  157.  
  158. procedure domatrix;
  159. var s:astr; pasw:astr; fuku:boolean;
  160. begin
  161.   wantnewuser:=false;
  162.   repeat
  163.     fuku:=false;
  164.     nl;nl; print('Connected at '+spd+' bps at '+time);
  165.     printfile(systat.gfilepath+'matrix.msg');
  166.     prompt('Matrix Command: ');
  167.        onek(c,'1234');
  168.     case c of
  169.       '1':begin
  170.             echo:=false;
  171.             nl;nl; prompt('Enter BBS Password: '); input(s,20); if s<>systat.bbspw then
  172.                begin nl; nl; fuku:=true; print('Wrong.'); {hangup:=true;} end;
  173.             echo:=true;
  174.           end;
  175.       '2':begin
  176.             wantnewuser:=true;
  177.           end;
  178.       '3':begin
  179.             print('Enter your user name or #');
  180.             prompt(':');
  181.             repeat
  182.               finduser(usernum);
  183.             until (usernum<>-1) or (hangup);
  184.             if usernum=0 then print('You do not exist on this BBS.') else begin
  185.               reset(uf); seek(uf,usernum); read(uf,thisuser); echo:=false;
  186.               print('Password'); prompt(':'); input(pasw,20); echo:=true;
  187.               if pasw<>thisuser.pw then print('Invalid Password.');
  188.               if (thisuser.sl>systat.newsl) and (thisuser.pw=pasw) then begin
  189.                 nl;nl;
  190.                 print('You are a validated user of this BBS.');
  191.                 print('The BBS password is "'+systat.bbspw+'"');
  192.                 nl;nl;
  193.               end else print('Sorry, you haven''t been validated yet.');
  194.             end;
  195.           end;
  196.        '4':hangup:=true;
  197.      end;
  198.      if fuku=true then c:='4';
  199.   until (hangup) or (c='1') or (c='2');
  200. end;
  201.  
  202. function getuser:boolean;
  203. var tries:integer; pasw,s,phone:astr; done,nu,ok,b300:boolean;
  204. begin
  205.   wantnewuser:=false;
  206.   macok:=false; nu:=false;
  207.   if windowon then window(1,1,80,21) else window(1,1,80,24);
  208.   echo:=true;nl;nl;
  209.   pasw:='';
  210.     print(' Telegard Bulletin Board System Version '+ver);
  211.     print('  By Carl Mueller and The ProtoSys Project');nl;
  212.     if systat.matrix then domatrix;
  213.     b300:=true;
  214.     if spd='300' then begin
  215.     if systat.b300lowtime<>systat.b300hitime then begin
  216.       if systat.b300hitime>systat.b300lowtime then begin
  217.         if (timer<=(systat.b300lowtime*60.0)) or (timer>=(systat.b300hitime*60.0))
  218.           then b300:=false;
  219.       end else begin
  220.         if (timer<=(systat.b300lowtime*60.0)) and (timer>=(systat.b300hitime*60.0))
  221.           then b300:=false;
  222.       end;
  223.     end;
  224.     if b300=false then begin printfile(systat.gfilepath+'no300h.msg'); hangup:=true; end;
  225.     if (systat.lock300) and (spd='300') then begin
  226.       printfile(systat.gfilepath+'no300.msg');
  227.       hangup:=true;
  228.     end;
  229.     end;
  230.     if not (wantnewuser) then begin
  231.     if systat.lansi then begin
  232.     sprompt(systat.ansiq);
  233.     if yn then print_file(systat.gfilepath+'welcome.ANS') else printfile(systat.gfilepath+'welcome.msg');end;
  234.     if not systat.lansi then printfile(systat.gfilepath+'welcome.msg');
  235.     end;
  236.     tries:=0;
  237.     repeat
  238.       repeat
  239.         if not (wantnewuser) then begin
  240.         if systat.multitask then print('[> System under Multitasking environment <]');
  241.         if (systat.note[1]<>'') then print(systat.note[1]);
  242.         if (systat.note[2]<>'') then print(systat.note[2]);
  243.         if (systat.lprompt<>'') then prompt(systat.lprompt);
  244.         end;
  245.         if (systat.matrix) and (wantnewuser) then usernum:=-1 else finduser(usernum);
  246.         fix_window;
  247.         if usernum=0 then tries:=tries+1;
  248.       until (tries=systat.tries) or hangup or (usernum<>0);
  249.       if tries>=systat.tries then hangup:=true;
  250.       ok:=true; done:=false;
  251.       if usernum=-1 then begin
  252.         clrscr;
  253.         window(1,1,80,25); gotoxy(1,25);
  254.         textcolor(14); textbackground(1); clreol;
  255.         gotoxy(1,25); write('                     New user on at '+spd+' baud');
  256.         textcolor(3); textbackground(0); gotoxy(1,1);
  257.         window(1,1,80,24); gotoxy(1,1);
  258.         done:=true; ok:=false;
  259.         if incom and systat.closedsystem then begin
  260.           printf(systat.gfilepath+'system');
  261.           printf(systat.gfilepath+'nonewusr');
  262.           hangup:=true;
  263.         end else
  264.           nu:=true;
  265.       end else begin
  266.         echo:=false; reset(uf); seek(uf,usernum); read(uf,thisuser);
  267.         topscr;
  268.         commandline('Password - "'+thisuser.pw+'"');
  269.         nl; cl(3); print('Welcome to '+systat.bbsname+', '+nam); nl;
  270.         lastcaller:=nam;
  271.         cl(0); prompt('User Password   : '); cl(5); input(pasw,20);
  272.         if systat.fone then begin cl(0); prompt('Finish Phone #  : '); cl(5);
  273.         prompt('###-###-'); input(phone,4); echo:=true; end
  274.         else phone:=(copy(thisuser.ph,9,4));echo:=true;
  275.         if (thisuser.pw<>pasw) or (copy(thisuser.ph,9,4)<>phone) then begin
  276.           nl; print(chr(7)+'ILLEGAL LOGON'+CHR(7)); nl;
  277.           if (not hangup) and (usernum<>0) then sl1('### Illegal logon: '+thisuser.name+' #'+cstr(usernum)+' Tried: '+pasw);
  278.           thisuser.illegal:=thisuser.illegal+1; seek(uf,usernum);
  279.           write(uf,thisuser);
  280.           ok:=false; tries:=tries+1; if tries>=systat.tries then hangup:=true;
  281.         end else done:=true;
  282.         if (thisuser.sl=255) and ok and incom and not hangup then begin echo:=false;
  283.           cl(0); prompt('System Password : '); cl(5);
  284.           input(pasw,20); echo:=true; if pasw<>systat.sysoppw then begin
  285.             nl;print(chr(7)+'ILLEGAL LOGON'+chr(7)); nl; ok:=false;
  286.             sl1('$$$$ Illegal SysOp Password $$$$'); done:=false;
  287.             tries:=tries+1; if tries>=systat.tries then hangup:=true;
  288.           end;
  289.         end;
  290.         close(uf);
  291.       end;
  292.     until hangup or done;
  293.     if thisuser.lockedout then begin
  294.       printf(systat.gfilepath+thisuser.lockedfile);
  295.       sysoplog('* '+thisuser.name+' ->Attempt to access system when locked out');
  296.       hangup:=true;
  297.     end;
  298.     if not (nu or hangup) then begin
  299.       if (rlogon in thisuser.ac) and (thisuser.laston=date) then begin
  300.         print('You can only log on once per day.');
  301.         hangup:=true; sl1(thisuser.name+' #'+cstr(usernum)+' tried logging on');
  302.       end;
  303.       if tries=systat.tries then hangup:=true;
  304.     end;
  305.     getuser:=nu;
  306.     checkit:=false;
  307. end;
  308.  
  309. procedure vote;
  310. var vdata:file of vdatar; vd:vdatar; int,int2:integer; i,i1,ij:astr; abort,next,done,lq:boolean;
  311.  
  312. procedure vote1(qnum:integer);
  313. begin
  314.   seek(vdata,qnum-1); read(vdata,vd);
  315.   if vote1x(qnum,vd) then begin
  316.     seek(vdata,qnum-1); write(vdata,vd);
  317.   end;
  318. end;
  319.  
  320. begin
  321.   i:=''; done:=false; lq:=true;
  322.   assign(vdata,systat.gfilepath+'voting.dat');
  323.   {$I-} reset(vdata); {$I+}
  324.   if ioresult<>0 then print('No voting today.') else
  325.   repeat
  326.     done:=false;
  327.     ij:='Q?';
  328.     abort:=false;
  329.     if lq then begin
  330.       cls; printacr(#3+#5+'Current Questions:',abort,next); nl;
  331.     end;
  332.     int2:=0;
  333.     for int:=1 to 20 do begin
  334.       seek(vdata,int-1); read(vdata,vd);
  335.       if vd.numa<>0 then begin
  336.         int2:=int2+1;
  337.         if lq and not abort then begin
  338.           if thisuser.vote[int]=0 then i1:=#3+#8+'* ' else i1:='  ';
  339.           i1:=i1+#3+#4+cstr(int)+#3+#7+': '+#3+#3+vd.question;
  340.           printacr(i1,abort,next);
  341.         end;
  342.         ij:=ij+cstr(int);
  343.       end;
  344.     end;
  345.     lq:=false;
  346.     if int2=0 then begin done:=true; print('No voting questions now.') end
  347.     else begin
  348.       nl; nl; prt('Which question (#,Q,?) : ');
  349.       input(i,2);
  350.       int:=value(i); if i='Q' then done:=true; if i='?' then lq:=true;
  351.       if (int>0) and (int<21) then vote1(int);
  352.     end;
  353.   until done or hangup;
  354.   close(vdata);
  355. end;
  356.  
  357. function logon:boolean;
  358. var fil:file of astr; lo:array[1..8] of astr; num:integer; i:astr; ul:text; c:char;
  359.     abort,rm:boolean; callsleft,ct:integer; z:integer; qq:integer; zz:string[5];
  360. begin
  361.   logon1; rm:=false;
  362.   sl1('');
  363.   sl1(#3+#4+cstr(systat.callernum)+#3+#2+': '+#3+#3+nam+' '+time+' '+date+'  '+spd+
  364.     '  - '+cstr(thisuser.ontoday));
  365.   assign(ul,systat.gfilepath+'user.log'); append(ul);
  366.   writeln(ul,#3+#3+mln(cstr(systat.callernum),5)+#3+#1+'- '+#3+#0+mln(nam,26)+#3+#1+' -'+
  367.   #3+#4+time); close(ul);
  368.   systat.callernum:=systat.callernum+1; systat.callstoday:=systat.callstoday+1;
  369.   nl;nl; board:=1;
  370.   mread:=0; extratime:=0.0; chattime:=0.0; timeon:=timer; extramsgs:=0;
  371.   dump;
  372.   printfile1(systat.gfilepath+'logon.msg',abort);
  373.   if not (abort or (pause in thisuser.defaults)) then
  374.     pausescr;
  375.   printf(systat.gfilepath+'sl'+cstr(thisuser.sl));
  376.   if (thisuser.citystate='') or (thisuser.citystate='Unkown, MI') then docitystate;
  377.   if thisuser.citystate='@update' then begin nl;print('Updating system records ...');
  378.   nl;print('Answer all questions TRUTHFULLY.');nl;
  379.     updateuser;
  380.     nl;
  381.   end;
  382.   if thisuser.computer='Unknown' then begin nl;print('Enter your computer type.');
  383.   prt(':');mpl(14);inputl(thisuser.computer,14);end;
  384.   nl;cl(5);
  385.   if sysop1 then sprint(systat.sysopin) else sprint(systat.sysopout); nl;
  386.   readamsg; savesystat;
  387.   if systat.callstoday<>0 then begin
  388.     nl; cl(3);prompt('You are the ');
  389.     zz:=cstr(systat.callstoday);
  390.     zz:=copy(zz,length(zz),1);
  391.     z:=value(zz);
  392.     ct:=systat.callstoday;
  393.     if ct=12 then z:=4; if ct=11 then z:=4; if ct=13 then z:=4;
  394.     cl(0); prompt(cstr(systat.callstoday)); cl(4);
  395.     if z=0 then prompt('th');
  396.     if z=1 then prompt('st');if z=2 then prompt('nd');if z=3 then prompt('rd');if z>3 then prompt('th');
  397.     cl(3);prompt(' caller for today.');
  398.   end;
  399.   nl;nl;nl; lmain:=true; lmsg:=false; prompt('User name      - ');
  400.   cl(3); print(nam);
  401.   prompt('Time allowed   - ');cl(3);print(cstr(seclev[thisuser.sl].ttime));
  402.   if thisuser.waiting<>0 then begin prompt('Mail waiting   - ');cl(3);prompt(cstr(thisuser.waiting));
  403.   if thisuser.waiting>1 then print(' letters') else print(' letter'); end;
  404.   if thisuser.illegal<>0 then begin
  405.     prompt(#7);cl(8);print('Illegal logons - '+cstr(thisuser.illegal));
  406.   end;
  407.   if thisuser.laston<>date then begin prompt('Last on        - ');cl(3);print(thisuser.laston); end
  408.     else begin prompt('Times on today - ');cl(3);print(cstr(thisuser.ontoday)); end;
  409.   if (daynum(thisuser.laston)<=daynum(systat.gfiledate)) and
  410.     (daynum(thisuser.laston)>0) then begin
  411.     nl;
  412.     cl(4);print('There may be new general files available.');
  413.   end;
  414.   abort:=false;
  415.   for num:=1 to 20 do
  416.     if vqu[num] and (thisuser.vote[num]=0) then abort:=true;
  417.   if abort then begin nl; cl(5); print('There are new voting questions.'); end;
  418.   if thisuser.forusr<>0 then begin
  419.     nl;
  420.     cl(5); print('Your mail is being forwarded to user #'+cstr(thisuser.forusr));
  421.   end;
  422.   nl;nl;useron:=true; topscr;
  423.   if smw in thisuser.option then rsm;
  424.   thisuser.option:=thisuser.option-[smw];
  425.   if (alert in thisuser.option) and sysop1 then chatcall:=true;
  426.   if thisuser.waiting<>0 then begin
  427.     nl;nl; ynq('Read your mail now? ');
  428.     if yn then begin nl; rm:=true; end;
  429.     nl;nl;
  430.   end;
  431.   logon:=rm;
  432. end;
  433.  
  434. procedure reqchat(xx:integer);
  435. var ii:integer; r:char; chatted:boolean;
  436. begin
  437.   chatted:=false;
  438.   if (not sysop) or (rchat in thisuser.ac)
  439.   then begin
  440.     prt(':'); mpl(70); inputl(i,70);sysoplog('Chat attempt: '+i);
  441.     printf(systat.gfilepath+'nosysop');chatr:=i;
  442.     irt:='Tried chatting.';
  443.     imail(1);
  444.   end else begin
  445.     if not chatcall then begin
  446.       prt(':');mpl(70);inputl(i,70);
  447.       if i<>'' then begin
  448.         sysoplog('Chat: '+i);
  449.         if (xx=1) or (xx=0) then begin
  450.           nl;cl(7);prompt('<<');cl(8);prompt('Chat call active');cl(7);print('>>');
  451.           for ii:=1 to 10 do begin sound(100);delay(30);sound(500);delay(30);sound(1000);delay(30);sound(800);delay(30);
  452.           sound(500);delay(30);end;
  453.           sound(440); delay(500); nosound;
  454.           chatcall:=true;
  455.         end else begin
  456.           commandline('Sysop -> Press <ENTER> or <SPACEBAR> to chat.');
  457.           nl;cl(0);print('Paging '+systat.sysopfirst+' '+systat.sysoplast+' for chat, Please wait'); cl(9);
  458.           ii:=0;
  459.           repeat
  460.           ii:=ii+1;
  461.             prompt('.');
  462.             sound(1300); delay(50); sound(1500); delay(50); sound(2000); delay(50);
  463.             sound(3000); delay(50); sound(2000); delay(50);
  464.             sound(1500); delay(50); sound(1300);
  465.             if keypressed then begin
  466.               r:=readkey; if (r=#13) or (r=#32) then begin chat; chatted:=true; end;
  467.             end;
  468.           until (chatted) or (ii=35) or (hangup);
  469.           nl;
  470.           if not chatted then begin
  471.             printf(systat.gfilepath+'nosysop'); irt:='Tried Chatting'; imail(1);
  472.           end;
  473.         end;
  474.         chatr:=i;
  475.       end else chatr:='';
  476.     end else
  477.       begin chatcall:=false; nl;print('Chat call turned off.'); chatr:='';end;
  478.   end;
  479.   nl;nl; tleft;
  480. end;
  481.  
  482. procedure abbs;
  483. var filvar:text; i,i1,i2:astr; c:char; tf:text; there:boolean;
  484. begin
  485.   if not(ramsg in thisuser.ac) and (thisuser.sl>10) then begin
  486.     nl; ynq('Do you want to add to the bbs list? ');
  487.     if yn then begin
  488.       repeat
  489.         print('Enter the phone number in the form:');
  490.         cl(3);print(' 313-773-6041');
  491.         print(' ###-###-####');
  492.         prt(':'); mpl(12); input(i1,12);
  493.       until (length(i1)=12) or (i1='') or hangup;
  494.       assign(tf,systat.gfilepath+'bbslist.msg'); there:=false;
  495.       {$I-} reset(tf); {$I+} if ioresult=0 then while not eof(tf) do begin
  496.         readln(tf,i); if copy(i,1,12)=i1 then there:=true;
  497.       end;
  498.       close(tf);
  499.       if there then begin nl;nl; print('It''s already in there.');
  500.         i1:=''; end;
  501.       i:=i1; if i<>'' then begin
  502.         print('Enter the name of the BBS:');
  503.         prt(':'); mpl(41); inputl(i1,41);
  504.         i:=i+'  '+#3+#0+i1;
  505.         while length(i)<58 do i:=i+' ';
  506.         nl; print('Enter max speed of system (ie, 300,1200,2400).');
  507.         prt(':'); mpl(4); input(i2,4);
  508.         if i2='' then
  509.           i:=i+'        '
  510.         else begin
  511.           while length(i2)<4 do i2:=' '+i2;
  512.           i:=i+#3+#3+'  ['+#3+#4+i2+#3+#3+']';
  513.         end;
  514.         if i1<>'' then begin
  515.           print('Enter a 4-8 character BBS type (ie, TELEGARD).');
  516.           prt(':');
  517.           mpl(8);
  518.           input(i1,8);
  519.           if i1<>'' then begin
  520.             if i1<>'TAG' then i:=i+#3+#7+' ('+#3+#3+i1+#3+#7+')' else
  521.               i:=i+#3+#7+' ('+#3+#9+i1+#3+#7+')';
  522.           end;
  523.           nl;nl; ynq('Is this correct? ');
  524.           if yn then begin
  525.             assign(filvar,systat.gfilepath+'bbslist.msg'); {$I-} append(filvar); {$I+}
  526.             if ioresult<>0 then
  527.               rewrite(filvar);
  528.             writeln(filvar,i);
  529.             close(filvar);
  530.             sysoplog('Added "'+i+'"');
  531.           end;
  532.         end;
  533.       end;
  534.     end;
  535.   end;
  536. end;
  537.  
  538. procedure yourinfo;
  539. var i:integer;
  540. begin
  541.   cls;
  542.   if (okansi) then begin
  543.     PROMPT('┌─────────────────────[ ');
  544.     cl(9);prompt('User Statistics');cl(1);print(' ]─────────────────────────┐');
  545.     print('│ Your Name    :                       On today        :          │');
  546.     print('│ Phone Number :                       Messages posted :          │');
  547.     print('│ Mail Waiting :                       E-mail Sent     :          │');
  548.     print('│ Sec Lev      :                       Time Spent On   :          │');
  549.     print('│ D/L Sec Lev  :                       Time This Call  :          │');
  550.     print('│ Times on     :                       Last on         :          │');
  551.     print('└─────────────────────────────────────────────────────────────────┘');
  552.     cl(0);
  553.     ansig(18,2);prompt(thisuser.name);ansig(18,3);prompt(thisuser.ph);
  554.     ansig(18,4);prompt(cstr(thisuser.waiting));ansig(18,5);prompt(cstr(thisuser.sl));
  555.     ansig(18,6);prompt(cstr(thisuser.dsl));ansig(18,7);prompt(cstr(1+thisuser.loggedon));
  556.     ansig(58,2);prompt(cstr(thisuser.ontoday));ansig(58,3);prompt(cstr(thisuser.msgpost));
  557.     ansig(58,4);prompt(cstr(thisuser.emailsent+thisuser.feedback));ansig(58,5);
  558.     prompt(cstrr(thisuser.ttimeon+((timer-timeon+30)/60),10)+' Min');
  559.     ansig(58,6);prompt(ctim(timer-timeon));ansig(58,7);prompt(thisuser.laston);
  560.     ansig(1,9);
  561.   end else begin
  562.     print('Your name      : '+nam);
  563.     print('Phone number   : '+thisuser.ph);
  564.     print('Mail waiting   : '+cstr(thisuser.waiting));
  565.     print('Sec Lev        : '+cstr(thisuser.sl));
  566.     print('D/L Sec Lev    : '+cstr(thisuser.dsl));
  567.     print('Last on        : '+thisuser.laston);
  568.     print('Times on       : '+cstr(1+thisuser.loggedon));
  569.     print('On today       : '+cstr(thisuser.ontoday));
  570.     print('Messages posted: '+cstr(thisuser.msgpost));
  571.     print('E-mail sent    : '+cstr(thisuser.emailsent+thisuser.feedback));
  572.     print('Time spent on  : '+cstrr(thisuser.ttimeon+((timer-timeon+30)/60),10)+' Minutes');
  573.     print('Time this call : '+ctim(timer-timeon));
  574.   end;
  575. end;
  576.  
  577. procedure prg(x:boolean);
  578. var q:boolean;
  579.  
  580. procedure purge(var quit:boolean);
  581. var cn:integer; c:char; a,b:boolean;
  582. begin
  583.   quit:=false;
  584.   nl;
  585.   cl(3);print('[/ Purge '+boards[board].name+' \]');
  586.   iscan;
  587.   cn:=1;
  588.   while (cn<=tnum) and (not quit) and (not hangup) do begin
  589.     if mary[cn].owner<>usernum then cn:=cn+1 else begin
  590.       readm(cn,a,b); nl;
  591.       prt('D:elete, I:gnore, Q:uit :'); onek(c,'QDI');
  592.       case c of
  593.         'D':begin
  594.               sysoplog('-'+mary[cn].title+' purged off '+boards[board].name);
  595.               deletem(cn);
  596.             end;
  597.         'Q':begin quit:=true; cn:=tnum+1; end;
  598.         'I':cn:=cn+1;
  599.       end;
  600.     end;
  601.   end;
  602.   cl(4);print('[/ '+boards[board].name+' Purge Done \]');
  603.   nl;
  604.   savebase;
  605. end;
  606.  
  607. procedure gpurge;
  608. var quit:boolean;
  609. begin
  610.   cl(7);print('[== Global Purge ==]');
  611.   board:=1; repeat
  612.     if (thisuser.sl>=boards[board].sl) and
  613.       ((boards[board].ar='@') or (boards[board].ar in thisuser.ar)) then
  614.         purge(quit);
  615.     board:=board+1;
  616.   until (board>numboards) or hangup or quit;
  617.   board:=1;
  618.   cl(7);print('[== Global Purge Done ==]');
  619. end;
  620.  
  621. begin
  622.   if x then gpurge else purge(q);
  623. end;
  624.  
  625. procedure removem;
  626. var t:integer; i:astr;
  627. begin
  628.   print('You have the following messages posted:');
  629.   iscan;
  630.   for t:=1 to tnum do begin
  631.     if mary[t].owner=usernum then
  632.       begin cl(3);prompt(cstr(t));cl(4);prompt(': ');cl(1);print(mary[t].title);end;
  633.   end; prt('Message to remove? ');
  634.   cl(7);input(i,3); t:=value(i);
  635.   if t<>0 then
  636.     if (t<1) or (t>tnum) then
  637.         print('Illegal number') else begin
  638.         if (mary[t].owner<>usernum) and not lcs then
  639.           print('You didn''t write it.') else begin
  640.             print(cstr(t)+': '+mary[t].title); ynq('Remove it? ');
  641.             if yn then begin
  642.               sysoplog('-'+mary[t].title+' deleted off of '+boards[board].name);
  643.               deletem(t); print('Removed.');
  644.             end;
  645.           end;
  646.         end;
  647.   savebase;
  648. end;
  649.  
  650. procedure boardlist(z:astr);
  651. var b:integer; i:astr; abort,next:boolean; c:Char; fuku:integer;
  652. begin
  653.   if z='' then c:=' ' else c:=z[1];
  654.   dumb:=c;
  655.   nl;nl; print('Boards available to you:'); print('');
  656.   b:=1; abort:=false;
  657.   if c='' then c:=' '; fuku:=0;
  658.   while (b<=numboards) and (not abort) do begin
  659.     if (boardac(b)) and (boards[b].key=c) then begin
  660.       if b<10 then i:=i+' ';
  661.       i:=i+#3+#3+cstr(b);
  662.       i:=i+' '+#3+#1+'- '+#3+#0+boards[b].name;
  663.       fuku:=fuku+1; if fuku=2 then begin printacr(i,abort,next); fuku:=0; i:=''; end
  664.         else
  665.       if fuku=1 then i:=mln(i,46);
  666.     end;
  667.     b:=b+1;
  668.   end;
  669.   nl;nl;
  670. end;
  671.  
  672. procedure delmail;
  673. var tu,d,i,x:integer; mr:mailrec; f:file; u:userrec; c:char; abort,next,done:boolean;
  674. begin
  675.   readingmail:=true;
  676.   nl;nl;d:=daynum(date); reset(uf); reset(mailfile);i:=0; done:=false;
  677.   while (i<filesize(mailfile)) and (not hangup) and (not done) do begin
  678.     seek(mailfile,i); read(mailfile,mr);
  679.     if (abs(mr.from)=usernum) and (mr.destin<>-1) then repeat
  680.       tu:=mr.destin; seek(uf,tu); read(uf,u); if systat.clearmsg then cls;
  681.       nl;
  682.       prompt('Title: ');cl(5);print(mr.title);
  683.       prompt('   To: ');cl(5);print(u.name+' #'+cstr(tu));
  684.       prompt(' Sent: ');cl(3);print(cstr(d-mr.date)+' days ago');
  685.       nl; prt('R:ead, D:elete, N:ext, Q:uit : ');
  686.       onek(c,'QNDR');
  687.       case c of
  688.         'Q':done:=true;
  689.         'D':begin
  690.               close(uf); sysoplog('Deleted mail to '+rmail(i)); reset(uf);
  691.               if tu=usernum then thisuser.waiting:=thisuser.waiting-1;
  692.               print('Mail deleted.');
  693.             end;
  694.         'R':begin nl; nl; readmsg(mr.msg,abort,next);end;
  695.       end;
  696.     until hangup or (c<>'R');
  697.     i:=i+1;
  698.   end;
  699.   close(uf); close(mailfile); topscr;
  700.   readingmail:=false;
  701. end;
  702.  
  703. procedure gfiles;
  704. var b:gft; f:file of gft; i:astr; t,c:integer; deep,exit:boolean;
  705.     gftit:array[1..150] of record tit:string[80]; arn:integer; gfile:boolean;end;
  706.     lgftn,lgftnt,numgft:integer; titl:astr;
  707.  
  708.   procedure gettit(n:integer);
  709.   var r:integer; b:gft;
  710.   begin
  711.     numgft:=0;
  712.     if n>0 then begin
  713.       seek(f,n); read(f,b); titl:='[ '+b.title+' ]';
  714.     end else titl:='[ Main Section ]';
  715.     r:=n+1;
  716.     if r<=t then begin
  717.       seek(f,r); read(f,b);
  718.       while (r<=t) and (b.filen[1]<>#1) do begin
  719.         if b.num<=thisuser.sl then begin
  720.           numgft:=numgft+1;
  721.           gftit[numgft].tit:=b.title;
  722.           gftit[numgft].arn:=r;
  723.           gftit[numgft].gfile:=true;
  724.         end;
  725.         r:=r+1;
  726.         if (r<=t) then begin seek(f,r); read(f,b); end;
  727.       end;
  728.     end;
  729.     if n=0 then
  730.       while (r<=t) do begin
  731.         seek(f,r); read(f,b);
  732.         if (b.filen[1]=#1) and (b.num<=thisuser.sl) then begin
  733.           numgft:=numgft+1;
  734.           gftit[numgft].tit:='[ '+b.title+' ]';
  735.           gftit[numgft].arn:=r;
  736.           gftit[numgft].gfile:=false;
  737.         end;
  738.         r:=r+1;
  739.       end;
  740.   end;
  741.  
  742.   procedure lgft;
  743.   var abort,next:boolean; c:integer;
  744.   begin
  745.     nl; print(titl); nl;
  746.     if numgft=0 then print('No G-files.') else begin
  747.       abort:=false; next:=false; c:=1;
  748.       while (c<=numgft) and (not abort) do begin
  749.         printacr(#3+#7+cstr(c)+#3+#4+': '+#3+#3+gftit[c].tit,abort,next);
  750.         c:=c+1;
  751.       end;
  752.     end;
  753.   end;
  754.  
  755. begin
  756.   nl; commandline('General File Read');
  757.   assign(f,systat.gfilepath+'gfiles.dat'); {$I-} reset(f); {$I+}
  758.   if ioresult<>0 then begin
  759.     rewrite(f); b.num:=0; write(f,b);
  760.   end;
  761.   seek(f,0); read(f,b); t:=b.num;
  762.   if t=0 then print('General files are not available today.') else begin
  763.     gettit(0); exit:=false;
  764.     lgft; lgftn:=0; deep:=false; lgftnt:=0;
  765.     repeat
  766.       nl; nl;
  767.       cl(5); prompt('['+cstr(lgftn)+'] '); cl(3);
  768.       prompt('Gfiles: (1-'+cstr(numgft)+',?,Q) : ');cl(5);
  769.       input(i,3);
  770.       if i='' then if lgftn=numgft then i:='Q' else i:=cstr(lgftn+1);
  771.       if i='?' then lgft;
  772.       if i='Q' then
  773.         if deep then begin
  774.           deep:=false;
  775.           gettit(0);
  776.           lgft;
  777.           lgftn:=lgftnt;
  778.         end else exit:=true;
  779.       c:=value(i);
  780.       if (c>0) and (c<=numgft) then begin
  781.         if gftit[c].gfile=true then begin
  782.           seek(f,gftit[c].arn);
  783.           read(f,b);
  784.           if pos('.ANS',b.filen)<>0 then print_file(systat.gfilepath+b.filen) else
  785.           printfile(systat.gfilepath+b.filen);
  786.           lgftn:=c;
  787.         end else begin
  788.           gettit(gftit[c].arn);
  789.           lgftn:=c;
  790.           if numgft>0 then begin
  791.             lgft;
  792.             lgftnt:=c; lgftn:=0;
  793.             deep:=true;
  794.           end else begin
  795.             gettit(0);
  796.             nl; print('No G-files there.');
  797.           end;
  798.         end;
  799.       end;
  800.     until exit or hangup;
  801.   end;
  802.   close(f);
  803.   nl;nl;
  804. end;
  805.  
  806. procedure chpw;
  807. var i:astr;
  808. begin
  809.   cls; print('Your current password is "'+thisuser.pw+'"');
  810.   print('If you change it, it must be between');
  811.   print('three and eight characters. Do you want');
  812.   prompt('to change it? ');
  813.   if yn then begin
  814.    repeat
  815.      print('Enter new password (20 chars max.)');prt(':');
  816.      mpl(20); input(i,20);
  817.      nl;
  818.    until (length(i)>2) or (i='') or hangup;
  819.    if i<>'' then begin
  820.      nl; nl; nl;
  821.      print('Password: "'+i+'"');
  822.      ynq('Is this what you want? ');
  823.      if yn then begin
  824.        if not hangup then thisuser.pw:=i;
  825.        sysoplog('Changed password.');
  826.      end else print('Password not changed.');
  827.    end else print('Password not changed.');
  828.   end;
  829. end;
  830.  
  831. procedure mmacro;
  832. var i:astr; c,mc:char; mcn,n,n1,mn:integer; done:boolean;
  833. begin
  834.   done:=false;
  835.   repeat
  836.     nl; prt('Macros: M,L,Q,? :'); onek(c,'QML?');
  837.     case c of
  838.       '?':begin
  839.             print('M:ake macro    L:ist macros');
  840.             print('Q:uit          ?:this');
  841.           end;
  842.       'Q':done:=true;
  843.       'L':begin
  844.             nl; print('Current Macros:');
  845.             for n:=1 to 2 do begin nl;
  846.               if n=1 then print('Ctrl-D:') else print('Ctrl-F:');
  847.               prompt('"');
  848.               for n1:=1 to length(thisuser.macro[n]) do
  849.                 if thisuser.macro[n][n1]>=' ' then
  850.                   prompt(thisuser.macro[n][n1])
  851.                 else
  852.                   begin cl(3);prompt('^'+chr(64+ord(thisuser.macro[n][n1])));cl(1);end;
  853.               print('"');
  854.             end;
  855.           end;
  856.       'M':mmacroo;
  857.     end;
  858.  until done or hangup;
  859. end;
  860.  
  861. procedure logoff;
  862. var s,d:integer; mr:mailrec; x:smr; tt:integer;
  863. begin
  864.   term_ready(false);
  865.   if timer<timeon then timeon:=timeon-86400.0;
  866.   tt:=trunc((timer-timeon+30)/60);
  867.   thisuser.laston:=systat.lastdate;
  868.   thisuser.loggedon:=thisuser.loggedon+1;
  869.   thisuser.sl:=realsl; thisuser.dsl:=realdsl;
  870.   thisuser.illegal:=0;
  871.   thisuser.ttimeon:=thisuser.ttimeon+tt;
  872.   reset(uf); seek(uf,usernum); write(uf,thisuser); close(uf);
  873.   systat.activetoday:=systat.activetoday+tt;
  874.   systat.fbacktoday:=systat.fbacktoday+ftoday;
  875.   systat.emailtoday:=systat.emailtoday+etoday;
  876.   savesystat;
  877.   window(1,1,80,25);clrscr;
  878.   if hungup then sl1('[** Hung Up **]');
  879.   sl1('Read: '+cstr(mread)+'   Time on: '+cstr(tt));
  880.   if mailread then begin
  881.     {$I-}  reset(mailfile) {$I+};
  882.     if ioresult=0 then
  883.       if filesize(mailfile)>1 then begin
  884.         s:=0; d:=0;
  885.         while s<filesize(mailfile) do begin
  886.           seek(mailfile,s); read(mailfile,mr);
  887.           if (mr.destin<>-1) then
  888.             if s=d then d:=d+1 else begin
  889.               seek(mailfile,d); write(mailfile,mr); d:=d+1;
  890.             end;
  891.           s:=s+1;
  892.         end;
  893.         seek(mailfile,d); truncate(mailfile);
  894.       end;
  895.     close(mailfile);
  896.   end;
  897.   if smread then begin
  898.     {$I-}  reset(smf) {$I+};
  899.     if ioresult=0 then mailrea     if (mr.destin<>-1) then
  900.             if s=d then d:=d+1 else begin
  901.     Id off of '+boards[board].name);
  902.               deletem(t); print('Removed.');
  903.             end;
  904.           end;
  905.         end;
  906.   savebase;
  907. end;
  908.  
  909. procedure boardlist(z:astr);
  910. var b:integer; i:astr; abort,next:boolean; c:Char; fuku:integer;
  911. begin
  912.   if z='' then c:=' ' else c:=z[1];
  913.   dumb:=c;
  914.   nl;nl; print('Boards available to you:'); print('');
  915.   b:=1; abort:=false;
  916.   if c='' then c:=' '; fuku:=0;
  917.   while (bpi bos) then
  918.             if s=d then d:=d+1 else begin
  919.     Id off of '+boards[=0;
  920.   ff of '+bo
  921.        thenletem(t); print('ReRemoved.thenletem(tint('General fend;
  922. ; p    ort,nexephimr.loggedon+1;
  923.   thisogg)>1 threalend see   fu(mailfile,i); read(mailfile,mr);
  924.     if b:messafil if isnew passhar;nft].aroldk(uf,mafi:by thf,n); read(f,if c='' theold:==us(uf>mafi3);printafi<2553);printafi-=us(uf)>-53);prin(uf>0         end'L':begintin; seek(uf,tu fend;d<>l(uf,u:'); print);
  925. d-l(uf,)=ou:'); print('l(uf,tat(uf,+1etem(ti
  926.   if c='' then hile e:='Duf,u;
  927. rupof gft; i:astr;halt(egin
  928.    eral fen); if systat.clessharo ?:tlisto write(mailfile,mr)yourompt('   To: ');cl(5);print(u.name+' #'+cstr(tu));
  929.       oldkernum t,ray[afi3);print(cstr(d-mr.date)+' if c='' then fu(=rompt(' Sentilepath+b. el i:=i+1;ilepath+bssm(fu,islfinev begotr; crpritthigft; i:astint('General fenmoved.');
  930.           end;
  931.   closero ?boa
  932. e     pseeboa
  933. surompt('   To: iscread(f,b)cngfiles.datbegincnort topc:=' ' else c:=z   oldkeary[cn]num t,rary[cn]n[afi3)int(rary[cn]n[essafi
  934.   =ile of smread then begiile ofm(cnar s,d:inmailrec; x:smrcngfc     gftit print('Re begba     nlftnt,numgft:intege.loggedon+1;
  935.   thissi:=i+tff,n); re)      ?:x,c1,c2,c3,c4(mailfile,       nt('Rei); read(mait,e,cp(mailfile,f:messafiarsa:anontyp  if n>0 tus;
  936.     ift('Curra:erary fokeek(f,ue;
  937.       'L':beginuserf      te)+' if c='' theisign'es.') elif yn then be
  938.   rramon:=tseebhigft; thisuser.pw:=i;fs:=
  939.   (i print('Bedurx>eek(mailfile,d)i:=i+1x         d (c<=n;
  940. be((resizesyst;
  941.   windac3)inilfile((ile)>1>=seclev[y+ftoday;
  942. ]lesizes3);priny+ftoday;
  943. <553)ate)+' if c='' then p then sl1(isign'es.') el  if i='Q' then'Password if yn tS   dsizes  pme bte)anfor e
  944.   gft; okd(f,b);
  945.          if yn then be
  946.   rNUMBERS, ')p nlof  byvailabs,gup  20');
  947.   print('thisuser.sysoplog(78r.s assign('Pass
  948.   print('ro ?c       p noc:=na[c1]uku:integer;
  949. c    e, 2gfiles.dat')atbegin;
  950.    c:=' ' else c:=z[1];c3:=     ,',1;ilepath+bt('Beduc3list(z:ac3:=  end elsn
  951.             c4(systat.copyog(1,c3.da;ilepath+bt('Begfcopyog(c3+1,  end els-c exit:=trueth+b.file4<13)int(c4>max
  952.   s3)int(c4>=write(mai slate)+' c4(str;
  953. begin
  954.   educ4
  955.       nl; nl;
  956.      of '+boards[l1(c4u.name+'Hung (timer-timeon+30eduugftle of )int(((c4=ft;
  957.   vugfwai(d-g>50)3)int(le4<>ft;
  958.  '' then c:=' '; vugfwai(d-g>15)3)int(lnosizesystugfopt].at;
  959.       Ls); {$I+}
  960.   so3)inilfilen c:=' '; v(c4=g Up **] {$I+}
  961.   Ls);    nl; nl;
  962.      of '+bo    if yn tCan''t E-sizes'+ugframolfi#       c4u)));cl(1);end;
  963.     c4(str;
  964. begin
  965.     if s=d then d:=d+1+b.file4<n);
  966.     ugfro usr<n);e)+' c4(sro wa
  967. m c4ud then d:=d+1+b.fi
  968.   Ls
  969.  until done or hanguro ?c2      p noc:
  970.           end;
  971.    na[c2]=c4
  972.  until done or hangup;
  973. c4(str;
  974. begin
  975.     .file4<n);
  976.     c1<=2);e)+' ; nl;
  977.      of '+bo  na[c1]ukc4r;
  978. begin
  979.     ifc   c1n
  980.             if s=d then d:=d+1ree and eight characters. +b.fi
  981.    assie)+' ; nl;
  982.      of '+ord if yn tU
  983.   sguprkedr(64+ord(thisusec    e+ord(thisuse; {$I-}na[c1]<n);
  984.     c1<=2);c:=' ' else c:=z[1];boards[l1(na[c1]u.name+'Hung (t if yn t s'+ugframolfi#       na[c1]uud then d:=d+1+bc   c1n
  985.              s=d then d:=d+1   na[1]t)+',?,Q) : ');  Nor (64+ord(thisuseord macro;
  986. var i;
  987. recchar;   okd(yead(f,b)c,'QML?');
  988.  okd(
  989.            er.logokword not changed;boasize2 na64+ord(thitr(mread)+'   );
  990.             print('Q:uull-F threalet,mail(mailfile, assi,nex,ue;
  991.     r);
  992.     ifiles are not a,numgf(7
  993.    yn tU
  994.   sgwith access   pd;boa
  995. s[boa
  996. ]framolfc((timert a,nump then sl1(cft;
  997.     mail(ar;  assignf,b);
  998.    ; {$I-}n
  999.    assi;
  1000.     mail< if fil
  1001.   s3)rompt('   To: iail(aiailn
  1002.       ards[l1(srl[iail]-'+cb '+csame+'Hungprint('Bedu((u;
  1003. >=boa
  1004. s[boa
  1005. ]fslt;
  1006.  '' then ((boa
  1007. s[boa
  1008. ]far='@ssword(boa
  1009. s[boa
  1010. ]farsystufar3)ate)+' if c='' then   if ynlas(#3+#3+capsram mail)+#3+#2lfi#  #3+#4      srl[iail]-'+cb '+, assi,nex,64+ord(thisucft;ctn
  1011.         int('General fend;
  1012.    assie)+' ; nl;
  1013.     
  1014.         if ynlas(     ctilfiU
  1015.   s.', assi,nex,64+ordftnt,numgft:intege.loggedon+1;
  1016.   thispvllegareal assi,nex,ue;
  1017.     iles are not a 
  1018.        assignf,b);
  1019.    if ynlas('Te
  1020.   scroBBS Sif