Program  ex8_2 (input,output);

Const
   %include 'ilap:nmos.consts'
   maxnum = 20;

Type
   %include 'ilap:nmos.types'

Var
   suby, loady, vddy, phi2y, phi1y, gndy : integer;
   ins, outs, outsb : Array [1..maxnum] Of Integer;
   i, pn, number : integer;
   outfile : string[255];
   ports : Array [1..6+2*maxnum] of connf;

%include 'ilap:nmos.specs'

Begin
   Prompt ('Number of counter stages: ');
   Readln (number);
   If number > maxnum Then Begin
      number := maxnum;
      Writeln ('Maximum number of counters = ',maxnum);
   End;

   Prompt ('File name for the chip: ');
   Readln (outfile);

   Initialise (outfile);

   counter ('counter', number, suby, loady, vddy, phi1y, phi2y, gndy,
            ins, outs, outsb);

   fillport (ports[1], 1, 4, vddy, 8, metal);
   fillport (ports[2], 3, 4, phi1y, 2, diffusion);
   fillport (ports[3], 3, 4, phi2y, 2, diffusion);
   fillport (ports[4], 2, 2, gndy, 8, metal);
   fillport (ports[5], 3, 4, loady, 2, diffusion);
   fillport (ports[6], 3, 4, suby, 2, diffusion);
   pn := 6;
   for i:= 1 to number do begin
      pn := pn + 1;
      fillport (ports[pn], 3, 1, ins[i], 2, diffusion);
      pn := pn + 1;
      fillport (ports[pn], 4, 3, outs[i], 2, diffusion);
   end;
   placepads ('counter chip', 'counter', ports, pn);

   Finish;
End.
