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

  1. /*
  2.     /L Do not append sheet number to labels
  3.  */
  4.  
  5. /*  VERSION="1.10a  14-OCT-91"
  6.  *      - Added Version message
  7.  *      - Corrected capacity note regarding maximum Node Name length
  8.  *
  9.  *  Capacities:
  10.  *      - Part Names can contain up to 17 characters
  11.  *      - Module Names can contain up to 15 characters
  12.  *      - Reference Strings plus Pin Numbers can contain up to 12 characters
  13.  *      - Node Names can contain up to 8 characters
  14.  *      - Node Numbers are not checked for length
  15.  *      - Pin Numbers can contain up to 3 digits
  16.  */
  17.  
  18. int sw_L;
  19.  
  20. int net_items;
  21. int len;
  22.  
  23. /*-----------------------*/
  24.  
  25. Initialize()
  26. {
  27.     WriteString(0,  "Creating Netlist...");
  28.     WriteCrLf(0);
  29.  
  30.     AddSymbol("Error");
  31.     SetSymbol(Error, "E");
  32.  
  33.     /* used to pad their standard symbol namesakes with spaces */
  34.     AddSymbol("PartNameStr");
  35.     AddSymbol("ModuleNameStr");
  36.     AddSymbol("ReferenceStr");
  37.  
  38.     AddSymbol("NetNumberStr");
  39.     AddSymbol("SignalNameStr");
  40.  
  41.     SetNumberWidth(1);
  42.  
  43.     sw_L = SwitchIsSet("L");
  44. }
  45.  
  46. /*-----------------------*/
  47.  
  48. WriteHeader()
  49. {
  50.     WriteString(1, "PARTS LIST");
  51.     WriteCrLf(1);
  52.     WriteCrLf(1);
  53.  
  54.     while (LoadInstance())
  55.     {
  56.         CopySymbol(PartName, PartNameStr);
  57.         PadSpaces(PartNameStr, 17);
  58.         len = SymbolLength(PartName);
  59.         if (len > 17)
  60.         {
  61.             WriteString(0, "ERROR: Name is too long '");
  62.             WriteSymbol(0, PartName);
  63.             WriteString(0, "', truncated to ");
  64.             WriteSymbol(0, PartNameStr);
  65.             WriteCrLf(0);
  66.  
  67.             SetSymbol(ExitType, "E");
  68.         }
  69.         WriteSymbol(1, PartNameStr);
  70.         WriteString(1, " ");
  71.  
  72.         /* if the ModuleName is empty, then use the PartName again */
  73.         len = SymbolLength(ModuleName);
  74.         if (len > 0)
  75.         {
  76.             CopySymbol(ModuleName, ModuleNameStr);
  77.             PadSpaces(ModuleNameStr, 15);
  78.  
  79.             if (len > 15)
  80.             {
  81.                 WriteString(0, "ERROR: Name is too long '");
  82.                 WriteSymbol(0, ModuleName);
  83.                 WriteString(0, "', truncated to ");
  84.                 WriteSymbol(0, ModuleNameStr);
  85.                 WriteCrLf(0);
  86.  
  87.                 SetSymbol(ExitType, "E");
  88.             }
  89.             WriteSymbol(1, ModuleNameStr);
  90.         }
  91.         else
  92.         {
  93.             PadSpaces(PartNameStr, 15);
  94.             WriteSymbol(1, PartNameStr);
  95.         }
  96.         WriteString(1, " ");
  97.  
  98.         WriteSymbol(1, ReferenceString);
  99.         WriteCrLf(1);
  100.     }
  101.  
  102.     WriteString(1, "EOS");
  103.     WriteCrLf(1);
  104.     WriteString(1, "NET LIST");
  105.     WriteCrLf(1);
  106.     WriteCrLf(1);
  107. }
  108.  
  109. /*-----------------------*/
  110.  
  111. HandleNodeName()
  112. {
  113.     int i;
  114.  
  115.     net_items = 0;
  116.     CopySymbol(SignalNameString, SignalNameStr);
  117.  
  118.     i = GetStandardSymbol(TypeCode);
  119.     if (i == 'L')
  120.     {
  121.         if (sw_L == 0)
  122.         {
  123.             MakeLocalSignal("-");
  124.             CopySymbol(LocalSignal, SignalNameStr);
  125.         }
  126.     }
  127.  
  128.     len = SymbolLength(SignalNameStr);
  129.     if (len > 8)
  130.     {
  131.         WriteString(0, "WARNING: Name is too long '");
  132.         WriteSymbol(0, SignalNameStr);
  133.         WriteString(0, "', changed to NODE ");
  134.         WriteSymbol(0, NetNumber);
  135.         WriteCrLf(0);
  136.  
  137.         i = CompareSymbol(ExitType, Error);
  138.         if (i != 0) { SetSymbol(ExitType, "W"); }
  139.  
  140.         i = 'N';
  141.     }
  142.  
  143.     if (i == 'L')
  144.     {
  145.         WriteString(1, "NODENAME ");
  146.         PadSpaces(SignalNameStr, 16);
  147.         WriteSymbol(1, SignalNameStr);
  148.         WriteString(1, " $");
  149.     }
  150.     if (i == 'P')
  151.     {
  152.         WriteString(1, "NODENAME ");
  153.         PadSpaces(SignalNameStr, 16);
  154.         WriteSymbol(1, SignalNameStr);
  155.         WriteString(1, " $");
  156.     }
  157.     if (i == 'S')
  158.     {
  159.         WriteString(1, "NODENAME ");
  160.         PadSpaces(SignalNameStr, 16);
  161.         WriteSymbol(1, SignalNameStr);
  162.         WriteString(1, " $");
  163.     }
  164.     if (i == 'N')
  165.     {
  166.         WriteString(1, "NODE     ");
  167.         CopySymbol(NetNumber, NetNumberStr);
  168.         PadSpaces(NetNumberStr, 16);
  169.         WriteSymbol(1, NetNumberStr);
  170.         WriteString(1, " $");
  171.     }
  172.     if (i == 'U')
  173.     {
  174.         WriteString(1, "NODE     ");
  175.         CopySymbol(NetNumber, NetNumberStr);
  176.         PadSpaces(NetNumberStr, 16);
  177.         WriteSymbol(1, NetNumberStr);
  178.         WriteString(1, " $");
  179.     }
  180.     WriteCrLf(1);
  181.  
  182.     /* write the leading 2 spaces for this net */
  183.     WriteString(1, "  ");
  184. }
  185.  
  186. /*-----------------------*/
  187.  
  188. WriteNet()
  189. {
  190.     int pin_num_len;
  191.     int ref_len;
  192.     int i;
  193.  
  194.     if (net_items == 4)
  195.     {
  196.         WriteString(1, "   $");
  197.         WriteCrLf(1);
  198.         WriteString(1, "  ");
  199.  
  200.         net_items = 0;
  201.     }
  202.     WriteString(1, "  ");
  203.  
  204.     /* the number of chars in the pin number */
  205.     pin_num_len = SymbolLength(PinNumberString);
  206.     /* the number of chars in the reference string */
  207.     ref_len = SymbolLength(ReferenceString);
  208.  
  209.     CopySymbol(ReferenceString, ReferenceStr);
  210.  
  211.     if (pin_num_len + ref_len > 11)
  212.     {
  213.         /* the two strings won't fit with one space between them */
  214.         WriteString(0, "ERROR: Reference plus Pin Number is too long '");
  215.         WriteSymbol(0, ReferenceString);
  216.         WriteString(0, "' and '");
  217.         WriteSymbol(0, PinNumberString);
  218.         WriteString(0, "'");
  219.         WriteCrLf(0);
  220.  
  221.         SetSymbol(ExitType, "E");
  222.  
  223.         if (pin_num_len == 1)
  224.         {
  225.             PadSpaces(ReferenceStr, 10);
  226.             ref_len = 10;
  227.         }
  228.         if (pin_num_len == 2)
  229.         {
  230.             PadSpaces(ReferenceStr, 9);
  231.             ref_len = 9;
  232.         }
  233.         if (pin_num_len == 3)
  234.         {
  235.             PadSpaces(ReferenceStr, 8);
  236.             ref_len = 8;
  237.         }
  238.         if (pin_num_len == 4)
  239.         {
  240.             PadSpaces(ReferenceStr, 7);
  241.             ref_len = 7;
  242.         }
  243.     }
  244.  
  245.     WriteSymbol(1, ReferenceStr);
  246.  
  247.     i = 12 - pin_num_len - ref_len;
  248.     while (i > 0)
  249.     {
  250.         WriteString(1, " ");
  251.         i = i - 1;
  252.     }
  253.     WriteSymbol(1, PinNumberString);
  254.  
  255.     net_items = net_items + 1;
  256. }
  257.  
  258. /*-----------------------*/
  259.  
  260. WriteNetEnding()
  261. {
  262.     WriteCrLf(1);
  263. }
  264.  
  265. /*-----------------------*/
  266.  
  267. ProcessFieldStrings()
  268. {
  269. }
  270.  
  271. /*-----------------------*/
  272.  
  273. WriteNetListEnd()
  274. {
  275.     WriteString(1, "EOS");
  276.     WriteCrLf(1);
  277.  
  278.     WriteString(0, "Done");
  279.     WriteCrLf(0);
  280. }
  281.  
  282.