home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-386-Vol-2of3.iso / c / ctkit11.zip / CTGRAPH.PAS < prev    next >
Pascal/Delphi Source File  |  1991-12-20  |  17KB  |  719 lines

  1. Unit CTGraph;
  2.  
  3. interface
  4.  
  5. uses
  6.    ctu, graph, rdrivers, rfonts, crt, async2, ctsoundu, dos;
  7.  
  8. const
  9.    maxmemused = 20000; {31043;}
  10.  
  11. type
  12.    Images = array[1..MaxMemUsed] of word;
  13.    ColType = Array [0..3] of boolean;
  14.    CDType = array[1..2] of integer;
  15.    TPicType = array[1..2000] of word;
  16.    SeriesType = record
  17.       r, ExNum: byte;
  18.       ComStr: string[10];
  19.       end;
  20.    AnimType = record
  21.       PicN, Way: byte;
  22.       x, y, pause: word;
  23.       end;
  24.  
  25. var
  26.    lastok, grmode, ExitCT, Respon: boolean;
  27.    Pic: ^Images;
  28.    x1, y1, x2, y2, ndex, Fill1, Fill2, hx1, hx2, hy1, hy2,
  29.     sx1, sy1, sx2, sy2, scramt: word;
  30.    MemUsed: longint;
  31.    gd, gm, apage, vpage: integer;
  32.                       { global variables for screen mode }
  33.                       { always remember to give 'em a value if yer using
  34.                         bitsizeof or stetobit.  }
  35.    TPic: ^TPicType;
  36.    Pics: Array[1..200] of pointer;
  37.    PSizes: Array[1..200] of word;
  38.    CurPic: byte;
  39.    CurFN: string;
  40.    PicFile: file;
  41.    ExStrings: array[1..5] of string;
  42.    Series: array[1..3,1..9] of SeriesType;
  43.    Film: array[1..30,1..10] of AnimType;
  44.    Frames: array[1..30] of byte;
  45.    TheTime: longint;
  46.  
  47. Procedure DoCode (R: byte; ComStr, ExStr: String);
  48.  
  49. implementation
  50.  
  51. {$I SCSTUFF.PAS}
  52.  
  53. Procedure LoadPic(FName: string; Pos, len: Longint; PNum: byte);
  54.  
  55. {len in bytes;
  56.  pos starts at 0, also bytes}
  57.  
  58. var
  59.    a: integer;
  60.    fnd: boolean;
  61.    x: char;
  62.    s: string[10];
  63.  
  64. begin
  65. { Write ('Loading pic #,',pnum,'(',Fname,' ',pos,' ',len,') '); }
  66. if FName <> CurFN then
  67.    begin
  68.    CurFN := FName;
  69.    {$I-}
  70.    Close (PicFile);
  71.    if Ioresult <> 0 then
  72.       ;
  73.    Assign (PicFile, Cnf.CTDir+FName);
  74.    Reset (PicFile, 1);
  75.    {$I+}
  76.    if IOResult <> 0 then
  77.       begin
  78.       Assign (PicFile, FName);
  79.       {$I-}
  80.       Reset(PicFile,1);
  81.       {$I+}
  82.       if IOresult <> 0 then
  83.          begin
  84.          if grmode then
  85.             OutText('ERROR!  File '+FName+' not found!')
  86.             else
  87.             writeln ('ERROR!  File '+FName+' not found!');
  88. {        Writeln ('Pos: ',Pos,' Len: ',Len,' PNum: ',PNum);  }
  89.          CurFN := '';
  90.          lastok := false;
  91.          PSizes[PNum] := 0;
  92.          GetMem(Pics[Pnum],0);
  93.          Exit;
  94.          end;
  95.       end;
  96.    end;
  97. a := filesize(PicFile);
  98. {
  99. if a < Len+Pos then
  100.    begin
  101.    lastok := false;
  102.    PSizes[PNum] := 0;
  103.    GetMem(Pics[Pnum],0);
  104.    Exit;
  105.    end;
  106. }
  107. if Len = 0 then
  108.    len := filesize(PicFile);
  109. Ndex := Len div 2;
  110. Seek(PicFile,Pos);
  111. BlockRead (PicFile, Pic^[1], Len);
  112. if pic^[2] = 9900 then
  113.    begin
  114. {  Writeln (MemAvail);  }
  115.    SteToBit (ndex);
  116.    end;
  117. FreeMem (Pics[PNum],PSizes[PNum]);
  118. PSizes[PNum] := ndex*2;
  119. GetMem (Pics[PNum], PSizes[PNum]);
  120. Move (Pic^, Pics[PNum]^, ndex*2);
  121. end;
  122.  
  123. Procedure LoadSong (songnum: byte; numinfile: word; fn: string);
  124.  
  125. begin
  126. FillChar (Song[songnum], sizeof(Songs), 0);
  127. Assign (SongFile, cnf.ctdir+fn);
  128. {$I-}
  129. Reset (SongFile, 1);
  130. {$I+}
  131. if IOResult <> 0 then
  132.    begin
  133.    Assign (SongFile, fn);
  134.    {$I-}
  135.    Reset (SongFile, 1);
  136.    {$I+}
  137.    if IOResult <> 0 then
  138.       begin
  139.       writeln ('ERROR!  File ',FN,' not found!');
  140.       lastok := false;
  141.       exit;
  142.       end;
  143.    end;
  144. Seek (SongFile, NumInFile);
  145. BlockRead (SongFile, Song[SongNum], SizeOf(Songs));
  146. Close (SongFile);
  147. end;
  148.  
  149. Procedure SwitchVPage;
  150.  
  151. begin
  152. VPage := 1-VPage;
  153. SetVisualPage(VPage);
  154. end;
  155.  
  156. Procedure SwitchAPage;
  157.  
  158. begin
  159. APage := 1-APage;
  160. SetActivePage(APage);
  161. end;
  162.  
  163. {
  164. Procedure SetMems;
  165.  
  166. var r: byte;
  167.  
  168. begin
  169. MemUsed := 0;
  170. for r := 1 to 20 do
  171.    begin
  172.    Dispose(Pics[r]);
  173.    GetMem(Pics[r], PSizes[r]);
  174.    MemUsed := MemUsed + PSizes[r];
  175.    end;
  176. end;
  177. }
  178.  
  179. Procedure StartTime;
  180.  
  181. var
  182.    hh, mm, ss, s100: word;
  183.  
  184. begin
  185. GetTime (hh, mm, ss, s100);
  186. TheTime := (s100+100*(ss+60*(mm+60*hh)))*10;
  187. end;
  188.  
  189. Procedure StopAndDel (Amt: word);
  190.  
  191. var
  192.    hh, mm, ss, s100: word;
  193.    TTime: longint;
  194.  
  195. begin
  196. GetTime (hh, mm, ss, s100);
  197. TTime := (s100+100*(ss+60*(mm+60*hh)))*10;
  198. TheTime := TTime - TheTime;
  199. if TheTime < 0 then
  200.    TheTime := TheTime + 24*60*60*1000;
  201. if amt > TheTime then
  202.    Delay (Amt-TheTime);
  203. end;
  204.  
  205. Procedure DoCode (R: byte; ComStr, ExStr: String);
  206.  
  207. var
  208.    w1, w2: word;
  209.    i1, i2: integer;
  210.    at, len, kp: byte;
  211.    ch: char;
  212.    ts: string;
  213.    tb: boolean;
  214.  
  215. Function PullWord(start: byte): word;
  216.  
  217. var
  218.    t2: word;
  219.  
  220. begin
  221. move (ComStr[Start], t2, 2);
  222. PullWord := t2;
  223. end;
  224.  
  225. begin
  226. lastok := true;
  227. case r of
  228.    1: begin
  229.       CurPic := Ord(ComStr[1]);
  230.       x1 := PullWord(2);
  231.       y1 := PullWord(4);
  232.       w1 := ord(comstr[6]);
  233.       PutImage(x1, y1, pics[CurPic]^, w1);
  234.       end;
  235.    2: begin
  236.       CurPic := ord(ComStr[1]);
  237.       w1 := pullword(2);
  238.       w2 := PullWord(4);
  239.       LoadPic (ExStr, w1, w2, CurPic);
  240.       end;
  241.    3: begin
  242.       x1 := PullWord(1);
  243.       y1 := PullWord(3);
  244.       if exstr = #254 then
  245.          exstr := '';
  246.       if grmode then
  247.          begin
  248. {        if gd > 1 then
  249.             switchapage;   }
  250.          MoveTo (x1,y1);
  251.          OutText(ExStr);
  252. {        if gd > 1 then
  253.             begin
  254.             switchvpage;
  255.             switchapage;
  256.             MoveTo(x1,y1);
  257.             OutText(ExStr);
  258.             SwitchApage;
  259.             end;          }
  260.          end else begin
  261.          if (WhereX <> x1) or (WhereY <> y1) then
  262.             GotoXY(x1, y1);
  263.          Write (ExStr);
  264.          end;
  265.       end;
  266.    4: begin
  267.       DetectGraph (i1, i2);
  268.       kp := i1;
  269.       Async_Send(chr(kp));
  270.       kp := i2;
  271.       Async_Send(chr(kp));
  272.       end;
  273.    5: begin
  274.       gd := ord(ComStr[1]);
  275.       gm := ord(ComStr[2]);
  276.       if gd > 0 then
  277.          begin
  278.          InitGraph (gd, gm, '');
  279.          grmode := true;
  280.          vpage := 0;
  281.          apage := 0;
  282.          end else begin
  283.          CloseGraph;
  284.          grmode := false;
  285.          end;
  286.       end;
  287.    6: begin  { only ega + }
  288.       apage := ord(comstr[1]);
  289.       vpage := ord(comstr[2]);
  290.       SetActivePage (Apage);
  291.       SetVisualPage (VPage);
  292.       end;
  293.    7: begin
  294.       x1 := PullWord(1);
  295.       y1 := PullWord(3);
  296.       x2 := PullWord(5);
  297.       y2 := PullWord(7);
  298.       SetColor (ord(ComStr[9]));
  299. {     if gd > 1 then
  300.          switchapage;       }
  301.       Line(x1, y1, x2, y2);
  302. {     if gd > 1 then
  303.          begin
  304.          switchvpage;
  305.          switchapage;
  306.          Line(x1, y1, x2, y2);
  307.          SwitchAPage;
  308.          end;                 }
  309.       end;
  310.    8: begin
  311.       x1 := PullWord(1);
  312.       y1 := PullWord(3);
  313.       x2 := PullWord(5);
  314.       SetColor(Ord(ComStr[7]));
  315. {     if gd > 1 then
  316.          SwitchAPage;          }
  317.       Circle (x1, y1, x2);
  318. {     if gd > 1 then
  319.          begin
  320.          switchvpage;
  321.          switchapage;
  322.          Circle (x1, y1, x2);
  323.          SwitchAPage;
  324.          end;                }
  325.       end;
  326.    9: begin
  327.       x1 := PullWord(1);
  328.       y1 := PullWord(3);
  329.       x2 := PullWord(5);
  330.       y2 := PullWord(7);
  331.       SetColor (ord(ComStr[9]));
  332. {     if gd > 1 then
  333.          SwitchAPage;           }
  334.       Rectangle(x1, y1, x2, y2);
  335. {     if gd > 1 then
  336.          begin
  337.          switchvpage;
  338.          switchapage;
  339.          Rectangle(x1, y1, x2, y2);
  340.          SwitchAPage;
  341.          end;                      }
  342.       end;
  343.    10: { nothin};
  344.    11: begin
  345.       MemUsed := MemAvail;
  346.       ts[0] := #4;
  347.       Move (MemUsed, ts[1], 4);
  348.       for at := 1 to 4 do
  349.          Async_send(ts[at]);
  350.       end;
  351. {     begin
  352.       at := 2;
  353.       for w1 := 1 to 20 do
  354.          begin
  355.          PSizes[w1] := PullWord(at);
  356.          inc(at);
  357.          inc(at);
  358.          end;
  359.       SetMems;
  360.       end;          }
  361.    12: begin
  362.       Writeln;
  363.       Writeln ('Returning to BBS...');
  364.       Delay(1000);
  365.       ExitCT := true;
  366.       end;
  367.    13: begin
  368.       if grmode then
  369.          ClearViewPort
  370.          else
  371.          ClrScr;
  372.       end;
  373.    14: begin
  374.       if GrMode then
  375.          begin
  376.          SetColor(ord(ComStr[1]));
  377.          if gd > 1 then
  378.             SetBkColor(ord(ComStr[2]));
  379.          end else begin
  380.          TextColor(ord(ComStr[1]));
  381.          TextBackGround(ord(ComStr[2]));
  382.          end;
  383.       end;
  384.    15: begin
  385. {     len := Ord(ComStr[1]);
  386.       x1 := PullWord(2);
  387.       y1 := PullWord(4);
  388.       if grmode then
  389.          MoveTo (x1, y1)
  390.          else
  391.          gotoXY (x1, y1);
  392.       ts := '';
  393.       kp := 0;
  394.       repeat
  395.          repeat
  396.             until (keypressed) or (async_buffer_check);
  397.          if async_buffer_check then
  398.             ch := WaitForChar;
  399.          if keypressed then
  400.             ch := readkey;
  401.          if (ch = #8) and (kp > 0) then
  402.             begin
  403.             tS[0] := chr(ord(ts[0]) - 1);
  404.             if Grmode then
  405.                begin
  406.                MoveTo (x1+TextWidth(ts)+1, y1);
  407.                end else
  408.                Write (#8,' ',#8);
  409.             Dec (kp);
  410.             end;
  411.          if (kp < Len) and (ch <> #8) and (ch <> #13) and (ch > #3) then
  412.             begin
  413.             tS := ts + ch;
  414.             inc(kp);
  415.             if grmode then
  416.                begin
  417.                Outtext(ch);
  418.                MoveTo(x1+textwidth(ts)+1, y1);
  419.                end else
  420.                Write (ch);
  421.             end;
  422.          until ch = #13;
  423.       for x1 := 0 to Length(ts) do
  424.          Async_Send(ts[x1]);
  425. }     end;
  426.    16: begin
  427.       Fill1 := PullWord(1);
  428.       Fill2 := PullWord(3);
  429.       SetFillStyle (Fill1, Fill2);
  430.       end;
  431.    17: begin
  432.       CurPic := ord(ComStr[1]);
  433.       x1 := PullWord(2);
  434.       y1 := PullWord(4);
  435.       x2 := PullWord(6);
  436.       y2 := PullWord(8);
  437.       if psizes[curpic] > 0 then
  438.          freemem (Pics[CurPic], psizes[CurPic]);
  439.       PSizes[CurPic] := ImageSize(x1, y1, x2, y2);
  440.       GetMem (Pics[CurPic], PSizes[CurPic]);
  441.       GetImage (x1, y1, x2, y2, Pics[CurPic]^);
  442.       end;
  443.    18: begin
  444.       len := ord(ComStr[1]);
  445.       kp := ord(ComStr[2]);
  446.       if kp = 1 then
  447.          fillchar(Series[len], Sizeof(series[len]), 0);
  448.       Series[len,kp].r := ord(ComStr[3]);
  449.       Series[len,kp].exnum := ord(ComStr[4]);
  450.       Series[len,kp].ComStr := ExStr;
  451.       end;
  452.    19: begin
  453.       len := ord(ComStr[1]);
  454.       for kp := 1 to 9 do
  455.          if series[len,kp].r > 0 then
  456.             begin
  457.             if Series[len,kp].ExNum > 0 then
  458.                DoCode (Series[len,kp].r,Series[len,kp].ComStr,ExStrings[Series[len,kp].ExNum])
  459.                else
  460.                DoCode (Series[len,kp].r,Series[len,kp].ComStr,'');
  461.             end;
  462.       end;
  463.    20: begin
  464.       len := Ord(ComStr[1]);
  465.       ExStrings[len] := ExStr;
  466.       end;
  467.    21: gd := Ord(ComStr[1]);
  468.    22: begin
  469.       len := ord(ComStr[1]);
  470.       w1 := PullWord(2);
  471.       LoadSong (len, w1, ExStr);
  472.       end;
  473.    23: begin
  474.       len := ord(ComStr[1]);
  475.       PlaySong (len);
  476.       end;
  477.    24: begin
  478.       len := ord(ComStr[1]);
  479.       kp := ord(ComStr[2]);
  480.       Film[len,kp].PicN := Ord(ComStr[3]);
  481.       Film[len,kp].Pause := PullWord(4);
  482.       Film[len,kp].x := pullword(6);
  483.       film[len,kp].y := pullword(8);
  484.       Film[len,kp].Way := ord(ComStr[10]);
  485.       frames[len] := kp;
  486.       end;
  487.    25: begin
  488.       len := ord(ComStr[1]);
  489.       w1 := pullword(2);
  490.       w2 := pullword(4);
  491.       for kp := 1 to frames[len] do
  492.          begin
  493.          if film[len,kp].picn = 0 then
  494.             begin
  495.             len := film[len,kp].x;
  496.             kp := 1;
  497.             end;
  498.          with film[len,kp] do
  499.             begin
  500. {           StartTime;    }
  501. {           if gd > 1 then
  502.                SwitchAPage;    }
  503.             PutImage(w1+x, w2+y, pics[picn]^, Film[len,kp].Way);
  504. {           if gd > 1 then
  505.                begin
  506.                SwitchVPage;
  507.                SwitchAPage;
  508.                PutImage(w1+x, w2+y, pics[picn]^, 0);
  509.                SwitchAPage;
  510.                end;               }
  511. {           StopAndDel (pause);   }
  512.             Delay (pause);
  513.             end;
  514.          end;
  515.       end;
  516.    26: begin
  517.       w1 := PullWord (1);
  518.       w2 := PullWord (3);
  519.       settextstyle (w2, HorizDir, w1);
  520.       end;
  521.    27: begin
  522.       x1 := PullWord(1);
  523.       y1 := PullWord(3);
  524.       w1 := PullWord(5);
  525. {     if gd > 1 then
  526.          SwitchAPage;          }
  527.       PieSlice (x1, y1, 0, 360, w1);
  528. {     if gd > 1 then
  529.          begin
  530.          switchvpage;
  531.          switchapage;
  532.          PieSlice (x1, y1, 0, 360, w1);
  533.          SwitchAPage;
  534.          end;                }
  535.       end;
  536.    28: begin
  537.       x1 := PullWord(1);
  538.       y1 := PullWord(3);
  539.       x2 := PullWord(5);
  540.       y2 := PullWord(7);
  541. {     if gd > 1 then
  542.          SwitchAPage;           }
  543.       Bar(x1, y1, x2, y2);
  544. {     if gd > 1 then
  545.          begin
  546.          switchvpage;
  547.          switchapage;
  548.          Bar(x1, y1, x2, y2);
  549.          SwitchAPage;
  550.          end;                      }
  551.       end;
  552.    29: begin
  553.       x1 := PullWord(1);
  554.       y1 := PullWord(3);
  555.       kp := ord(ComStr[5]);
  556. {     if gd > 1 then
  557.          SwitchAPage;          }
  558.       FloodFill (x1,y1,kp);
  559. {     if gd > 1 then
  560.          begin
  561.          switchvpage;
  562.          switchapage;
  563.          FloodFill (x1,y1,kp);
  564.          SwitchAPage;
  565.          end;                      }
  566.       end;
  567.    30: begin
  568.       kp := ord(ComStr[1]);
  569.       len := ord(ComStr[2]);
  570.       Song[kp].l[len] := ord(ComStr[3]);
  571.       Song[kp].n[len] := ord(ComStr[4]);
  572.       Song[kp].o[len] := ord(ComStr[5]);
  573.       end;
  574.    31: begin
  575.       kp := ord(ComStr[1]);
  576.       if kp = 0 then
  577.          respon := false
  578.          else
  579.          respon := true;
  580.       end;
  581.    32: begin
  582.       w1 := PullWord(1);
  583.       kp := ord(ComStr[3]);
  584.       SetPalette (w1, kp);
  585.       end;
  586.    33: begin
  587.       x1 := Pullword(1);
  588.       y1 := PullWord(3);
  589.       x2 := PullWord(5);
  590.       y2 := Pullword(7);
  591.       w1 := PullWord(9);
  592.       Arc (x1,y1,x2,y2,w1);
  593.       end;
  594.    34: begin
  595.       x1 := PullWord(1);
  596.       y1 := PullWord(3);
  597.       x2 := PullWord(5);
  598.       y2 := PullWord(7);
  599.       if comstr[9] = #1 then
  600.          tb := true
  601.          else
  602.          tb := false;
  603.       SetViewPort (x1, y1, x2, y2, tb);
  604.       end;
  605.    35: begin
  606.       hx1 := PullWord(1);
  607.       hy1 := PullWord(3);
  608.       hx2 := PullWord(5);
  609.       hy2 := PullWord(7);
  610.       GetImage (hx1, hy1, hx2, hy2, Pic^);
  611.       PutImage (hx1, hy1, Pic^, NotPut);
  612.       end;
  613.    36: begin
  614.       if (hx1 = 0) and (hx2 = 0) then
  615.          exit;
  616.       if (Pic^[1] <> hx2-hx1) and (Pic^[2] <> hy2-hy1) then
  617.          begin
  618.          GetImage (hx1, hy1, hx2, hy2, Pic^);
  619.          PutImage (hx1, hy1, Pic^, NotPut);
  620.          end else
  621.          PutImage (hx1, hy1, Pic^,0);
  622.       hx1 := 0;
  623.       hx2 := 0;
  624.       end;
  625.    37: begin
  626.       sx1 := PullWord(1);
  627.       sy1 := PullWord(3);
  628.       sx2 := PullWord(5);
  629.       sy2 := PullWord(7);
  630.       scramt := pullword(9);
  631.       if gd = 1 then
  632.          scramt := (scramt div 2) * 2;
  633.       end;
  634.    38: begin
  635.       if gd = 3 then
  636.          begin
  637.          Port[$3ce] := 5;
  638.          Port[$3cf] := 1;
  639.          kp := (sx2-sx1+1) div 8;
  640.          len := sx1 div 8;
  641.          for w1 := sy1 to sy2-scramt do
  642.             move (mem[40960:(w1+Scramt)*80+len],mem[40960:w1*80+len],kp);
  643.          end;
  644.       if gd = 1 then
  645.          begin
  646.          if gm = 4 then
  647.             for w1 := sy1 div 2 to (sy2-scramt) div 2 + 1 do
  648.                begin
  649.                move (mem[$b800:w1*80+401+$2000],mem[$b800:w1*80+1+$2000],78);
  650.                move (mem[$b800:w1*80+401],mem[$b800:w1*80+1],78);
  651.                end;
  652.          {if gm = ... ???}
  653.          end;
  654.       bar (sx1,sy2-scramt+1,sx2,sy2);
  655.       end;
  656.    39: begin
  657.       len := sx1 div 8;
  658.       kp := (sx2-sx1+1) div 8;
  659.       if gd = 3 then
  660.          begin
  661.          Port[$3ce] := 5;
  662.          Port[$3cf] := 1;
  663.          for w1 := sy2-scramt downto sy1 do
  664.             move (mem[40960:w1*80+len],mem[40960:(w1+scramt)*80+len],kp);
  665.          end;
  666.       if gd = 1 then
  667.          begin
  668.          if gm = 4 then
  669.             for w1 := (sy2-scramt) div 2 downto (sy1 div 2) do
  670.                begin
  671.                move (Mem[$b800:w1*80+1+$2000],mem[$b800:w1*80+401+$2000],78);
  672.                move (mem[$b800:w1*80+1],mem[$b800:w1*80+401],78);
  673.                end;
  674.          {???}
  675.          end;
  676.       Bar (sx1,sy1,sx2,sy1+scramt-1);
  677.       end;
  678.    40: begin
  679.       if GrMode then
  680.          SetColor(ord(ComStr[1]))
  681.          else
  682.          TextColor(ord(ComStr[1]));
  683.       end
  684.    else
  685.       lastok := false;
  686.    end;
  687. end;
  688.  
  689. begin
  690. ExitCT := false;
  691. grmode := false;
  692. respon := true;
  693. lastok := true;
  694. CurFN := 'yaya';
  695. New(Pic);
  696. hx1 := 0;
  697. hx2 := 0;
  698. sx1 := 0;
  699. sx2 := 0;
  700. if RegisterBGIDriver (@CGADriverProc) < 0 then
  701.    ;
  702. if RegisterBGIDriver (@EGAVGADriverProc) < 0 then
  703.    ;
  704. if RegisterBGIFont (@TriplexFontProc) < 0 then
  705.    ;
  706. for x1 := 1 to 200 do
  707.    begin
  708.    getmem(Pics[x1], 0);
  709.    PSizes[x1] := 0;
  710.    end;
  711. fillchar(frames, sizeof(frames), 0);
  712. apage := 0;
  713. vpage := 0;
  714. Fill1 := 0;
  715. Fill2 := 0;
  716. gd := 0;
  717. { Cnf.CTDir := 'C:\MODEM\CTDATA\'; }
  718. end.
  719.