home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 13 / 13.iso / p / p078 / 3.img / NETFORMS.PLB / WIRELIST.CF < prev   
Encoding:
Text File  |  1991-10-14  |  7.1 KB  |  298 lines

  1. /*
  2.     /L Do not append sheet number to labels
  3.     /P Do not output pin numbers for Grid Array parts
  4.     /A Abbreviate label descriptions
  5.  */
  6.  
  7. /*  VERSION="1.10a  14-OCT-91"
  8.  *      - Added /P switch.  Grid array parts have pin numbers that are not
  9.  *        entirely numeric (e.g. 'A14').  If this format is to be used by
  10.  *        a machine, then these 'non-numeric' values might cause problems.
  11.  *      - Added /A switch (Equivalent to /B switch in SDT III.  We cannot
  12.  *        use /B since iform uses it already)
  13.  *      - Added Version message
  14.  *      - Corrected trapping of names that are too long
  15.  *
  16.  *  Capacities:
  17.  *      - Part Names are not checked for length
  18.  *      - Module Names can contain up to 29 characters
  19.  *      - Reference Strings can contain up to 9 characters
  20.  *      - Node Names are not checked for length
  21.  *      - Node Numbers are limited to 5 digits (plus the leading 'N')
  22.  *      - Pin Numbers are limited to 7 characters
  23.  *      - Pin Names are limited to 15 characters.
  24.  *
  25.  *  Characters:
  26.  *      - All characters are legal for Part Names, Module Names, and Reference Strings
  27.  *      - Legal characters for Pin Numbers are { '0..9' } except if /P
  28.  *        switch is set, which will allow all characters
  29.  */
  30.  
  31. int sw_L;
  32. int sw_P;
  33. int sw_A;
  34.  
  35. int pin_type;
  36. int len;
  37.  
  38. /*-----------------------*/
  39.  
  40. Initialize()
  41. {
  42.     WriteString(0, "Initialize");
  43.     WriteCrLf(0);
  44.  
  45.     AddSymbol("ReferenceStr");
  46.     AddSymbol("PartNameStr");
  47.     AddSymbol("PinNumberStr");
  48.     AddSymbol("PinNameStr");
  49.  
  50.     SetPinMap(0, "Input          ");
  51.     SetPinMap(1, "BiDirectional  ");
  52.     SetPinMap(2, "Output         ");
  53.     SetPinMap(3, "Open Collector ");
  54.     SetPinMap(4, "Passive        ");
  55.     SetPinMap(5, "Hi-Z           ");
  56.     SetPinMap(6, "Open Emitter   ");
  57.     SetPinMap(7, "Power          ");
  58.  
  59.     SetCharSet("0123456789");
  60.     SetNumberWidth(5);
  61.  
  62.     AddSymbol("Str");
  63.  
  64.     WriteString(1, "Wire List");
  65.     WriteCrLf(1);
  66.     WriteCrLf(1);
  67.  
  68.     CopySymbol(TitleString, Str);
  69.     PadSpaces(Str, 46);
  70.     WriteSymbol(1, Str);
  71.     WriteString(1, "Revised: ");
  72.     WriteSymbol(1, DateString);
  73.     WriteCrLf(1);
  74.     CopySymbol(DocumentNumber, Str);
  75.     PadSpaces(Str, 46);
  76.     WriteSymbol(1, Str);
  77.     WriteString(1, "Revision: ");
  78.     WriteSymbol(1, Revision);
  79.     WriteCrLf(1);
  80.     WriteSymbol(1, Organization);
  81.     WriteCrLf(1);
  82.     WriteSymbol(1, AddressLine1);
  83.     WriteCrLf(1);
  84.     WriteSymbol(1, AddressLine2);
  85.     WriteCrLf(1);
  86.     WriteSymbol(1, AddressLine3);
  87.     WriteCrLf(1);
  88.     WriteSymbol(1, AddressLine4);
  89.     WriteCrLf(1);
  90.     WriteCrLf(1);
  91.  
  92.     sw_L = SwitchIsSet("L");
  93.     sw_P = SwitchIsSet("P");
  94.     sw_A = SwitchIsSet("A");
  95. }
  96.  
  97. /*-----------------------*/
  98.  
  99. WriteHeader()
  100. {
  101.     WriteString(1, "<<< Component List >>>");
  102.     WriteCrLf(1);
  103.  
  104.     while (LoadInstance())
  105.     {
  106.         CopySymbol(PartName, PartNameStr);
  107.         PadSpaces(PartNameStr, 29);
  108.         len = SymbolLength(PartName);
  109.         if (len > 29)
  110.         {
  111.             WriteString(0, "ERROR: Name is too long '");
  112.             WriteSymbol(0, PartName);
  113.             WriteString(0, "', truncated to ");
  114.             WriteSymbol(0, PartNameStr);
  115.             WriteCrLf(0);
  116.  
  117.             SetSymbol(ExitType, "E");
  118.         }
  119.         WriteSymbol(1, PartNameStr);
  120.         WriteString(1, " ");
  121.  
  122.         CopySymbol(ReferenceString, ReferenceStr);
  123.         PadSpaces(ReferenceStr, 9);
  124.         len = SymbolLength(ReferenceString);
  125.         if (len > 9)
  126.         {
  127.             WriteString(0, "ERROR: Reference is too long '");
  128.             WriteSymbol(0, ReferenceString);
  129.             WriteString(0, "', truncated to ");
  130.             WriteSymbol(0, ReferenceStr);
  131.             WriteCrLf(0);
  132.  
  133.             SetSymbol(ExitType, "E");
  134.         }
  135.         WriteSymbol(1, ReferenceStr);
  136.         WriteString(1, " ");
  137.  
  138.         len = SymbolLength(ModuleName);
  139.         if (len > 0)
  140.         {
  141.             WriteSymbol(1, ModuleName);
  142.         }
  143.         else
  144.         {
  145.             WriteSymbol(1, PartName);
  146.         }
  147.         WriteCrLf(1);
  148.     }
  149.  
  150.     WriteCrLf(1);
  151.     WriteString(1, "<<< Wire List >>>");
  152.     WriteCrLf(1);
  153.     WriteCrLf(1);
  154.     WriteString(1, "  NODE  REFERENCE    PIN #   PIN NAME  ");
  155.     WriteString(1, "         PIN TYPE       PART VALUE");
  156.     WriteCrLf(1);
  157.     WriteCrLf(1);
  158. }
  159.  
  160. /*-----------------------*/
  161.  
  162. HandleNodeName()
  163. {
  164.     int i;
  165.  
  166.     WriteString(1, "[");
  167.     WriteSymbol(1, NetNumber);
  168.     WriteString(1, "] ");
  169.  
  170.     i = GetStandardSymbol(TypeCode);
  171.     if (i == 'L')
  172.     {
  173.         SetNumberWidth(1);
  174.         if (sw_L == 0)
  175.         {
  176.             MakeLocalSignal("_");
  177.             WriteSymbol(1, LocalSignal);
  178.         }
  179.         else
  180.         {
  181.             WriteSymbol(1, SignalNameString);
  182.         }
  183.  
  184.         WriteString(1, " (");
  185.         if (sw_A == 0) {
  186.             WriteString(1, "local to sheet ");
  187.         }
  188.         WriteSymbol(1, SheetNumber);
  189.         WriteString(1, ")");
  190.         SetNumberWidth(5);
  191.     }
  192.     if (i == 'P')
  193.     {
  194.         WriteSymbol(1, SignalNameString);
  195.     }
  196.     if (i == 'S')
  197.     {
  198.         WriteSymbol(1, SignalNameString);
  199.     }
  200.     if (i == 'N')
  201.     {
  202.         WriteString(1, "N");
  203.         WriteSymbol(1, NetNumber);
  204.     }
  205.     if (i == 'U')
  206.     {
  207.         WriteString(1, "N");
  208.         WriteSymbol(1, NetNumber);
  209.     }
  210.     WriteCrLf(1);
  211. }
  212.  
  213. /*-----------------------*/
  214.  
  215. WriteNet()
  216. {
  217.     int i;
  218.  
  219.     WriteString(1, "        ");
  220.  
  221.     CopySymbol(ReferenceString, ReferenceStr);
  222.     PadSpaces(ReferenceStr, 9);
  223.     WriteSymbol(1, ReferenceStr);
  224.     WriteString(1, "       ");
  225.  
  226.     /* don't check for legal characters unless /P is set */
  227.     CopySymbol(PinNumberString, PinNumberStr);
  228.     if (sw_P == 1)
  229.         { i = SymbolInCharSet(PinNumberStr); }
  230.     else
  231.         { i = 1; }
  232.  
  233.     if (i == 0)
  234.     {
  235.         WriteString(1, "        ");
  236.     }
  237.     else
  238.     {
  239.         PadSpaces(PinNumberStr, 7);
  240.         len = SymbolLength(PinNumberString);
  241.         if (len > 7)
  242.         {
  243.             WriteString(0, "ERROR: Name is too long '");
  244.             WriteSymbol(0, PinNumberString);
  245.             WriteString(0, "', truncated to ");
  246.             WriteSymbol(0, PinNumberStr);
  247.             WriteCrLf(0);
  248.     
  249.             SetSymbol(ExitType, "E");
  250.         }
  251.         WriteSymbol(1, PinNumberStr);
  252.         WriteString(1, " ");
  253.     }
  254.  
  255.     CopySymbol(PinNameString, PinNameStr);
  256.     PadSpaces(PinNameStr, 15);
  257.     len = SymbolLength(PinNameString);
  258.     if (len > 15)
  259.     {
  260.         WriteString(0, "ERROR: Name is too long '");
  261.         WriteSymbol(0, PinNameString);
  262.         WriteString(0, "', truncated to ");
  263.         WriteSymbol(0, PinNameStr);
  264.         WriteCrLf(0);
  265.  
  266.         SetSymbol(ExitType, "E");
  267.     }
  268.     WriteSymbol(1, PinNameStr);
  269.     WriteString(1, " ");
  270.  
  271.     i = GetStandardSymbol(PinType);
  272.     WriteMap(1, i);
  273.  
  274.     WriteSymbol(1, PartName);
  275.     WriteCrLf(1);
  276. }
  277.  
  278. /*-----------------------*/
  279.  
  280. WriteNetEnding()
  281. {
  282.     WriteCrLf(1);
  283. }
  284.  
  285. /*-----------------------*/
  286.  
  287. ProcessFieldStrings()
  288. {
  289. }
  290.  
  291. /*-----------------------*/
  292.  
  293. WriteNetListEnd()
  294. {
  295.     WriteString(0, "Done");
  296.     WriteCrLf(0);
  297. }
  298.