home *** CD-ROM | disk | FTP | other *** search
/ Jason Aller Floppy Collection / 153.img / TELES.ZIP / FAG.PAS < prev    next >
Pascal/Delphi Source File  |  1988-03-04  |  3KB  |  94 lines

  1. (*TAG FAG PROCEDURES
  2.  
  3. procedure printa1(i:anystring; var abort,next:boolean);
  4. var c:integer;
  5. begin
  6.  checkhangup;
  7.  if not hangup then begin
  8.   abort:=false;
  9.   next:=false;
  10.   c:=1;
  11.   if not empty then wkey(abort,next);
  12.   while not(abort or hangup) and (c-1<>length(i)) do begin
  13.     checkhangup;
  14.     if i[c]=chr(8) then begin
  15.       pap:=pap-1;
  16.       delay(30);
  17.     end else
  18.       if i[c]=#3 then begin
  19.         if i[c+1] in [#0..#9] then
  20.           if okansi then ansic(ord(i[c+1]));
  21.       end else if i[c]<>chr(10) then pap:=pap+1;
  22.     if not empty then wkey(abort,next);
  23.     if i[c]=#3 then c:=c+1
  24.     else outkey(i[c]);
  25.     c:=c+1;
  26.   end; {while}
  27.  end else abort:=true;
  28. end;
  29.  
  30. procedure printacr(i:anystring; var abort,next:boolean);
  31. begin
  32.  if not abort then
  33.   if i[length(i)]=#1 then printa(i,abort,next,true)
  34.   else printa(i+#1,abort,next,true);
  35. end;
  36.  
  37. procedure printa(i:anystring; var abort,next:boolean; spc:boolean);
  38. var s:anystring;
  39.     p,op,rp,rop,nca:integer;
  40.     crend:boolean;
  41. begin
  42.   if not abort then begin
  43.     crend:=(i[length(i)]=#1);
  44.     if crend then i:=copy(i,1,length(i)-1);
  45.     if (i[1]=#2) or (i[1]+i[2]='~*') then begin
  46.       centre(i);
  47.       printa1(i,abort,next);
  48.       nl;
  49.     end else
  50.     if i[1]+i[2]='~(' then begin
  51.       i:=copy(i,3,length(i)-2);
  52.       if length(i)<thisuser.colms then
  53.         i:=copy(spaces,1,thisuser.colms-length(i)-1)+i;
  54.       printa1(i,abort,next);
  55.       nl;
  56.     end else begin
  57.       wkey(abort,next);
  58.       if i='' then nl;
  59.       while (i<>'') and not(abort or hangup) do begin
  60.         rp:=0;
  61.         if pos(#27,i)=0 then nca:=thisuser.colms-pap-1 else nca:=255;
  62.         p:=0;
  63.         while (rp<nca) and (p<length(i)) do begin
  64.           if i[p+1]=#8 then rp:=rp-1
  65.           else
  66.             if i[p+1]=#3 then p:=p+1
  67.             else if (i[p+1]<>#10) then rp:=rp+1;
  68.           p:=p+1;
  69.         end; {while}
  70.         op:=p;
  71.         rop:=rp;
  72.         if (rp>=nca) and (p<length(i)) then begin
  73.           while ((not (i[p] in [' ',#8,#10])) or (i[p-1]=#3)) and (p>1)
  74.           do begin
  75.             rp:=rp-1; p:=p-1;
  76.           end;
  77.           if p=1 then
  78.             if not (i[1] in [' ',#8,#10]) then begin
  79.               rp:=rp-1; p:=p-1;
  80.             end;
  81.         end;
  82.         if abs(rop-rp)>=(thisuser.colms div 2) then p:=op;
  83.         s:=copy(i,1,p);
  84.         delete(i,1,p);
  85.         if (s[length(s)]=' ') and spc then s[0]:=pred(s[0]);
  86.         printa1(s,abort,next);
  87.         if ((i='') and crend) or (i<>'') or abort then nl
  88.         else if spc then printa1(' ',abort,next);
  89.       end; {while}
  90.     end; {else}
  91.   end;
  92. end;
  93. *)
  94.