[mod.sources] Wirewrap program, part 01 of 02

sources-request@genrad.UUCP (08/18/85)

Mod.sources:  Volume 2, Issue 36
Submitted by: karsh@geowhiz.UUCP (Bruce Karsh) <uwvax!geowhiz!karsh>


#!/bin/sh
#
# This is a release of my wirewrap program.  It has been used
# to make several boards here, and seems to be pretty reliable. 
# It was written on a Masscomp MC500, but I don't think there
# are any serious machine dependencies in it.  (But then again,
# I'm often suprised by how easy it is to inadvertantly write
# machine dependent code.)
# 
# I'd like to hear some bug reports and success stories.  I will
# try to send out bug fixes as quickly as I can.
# 
# As usual, unpack all parts by running through sh, then run make.
# 
# Unix Wirewrap Source Code:
# cnvtnum.c	gettoken.c	getwired.c	getwirelen.c	header1.c
# header2.c	initialize.c	insertname.c	insertx.c	main.c
# mywrite.c	mywrite2.c	namecmp.c	namecmp2.c	output1.c
# output2.c	output3.c	readin.c	setptr.c	setrowandcol.c
# sort1.c		sort2.c		test.c
# 
# .h files:
#   wirewrap.h
# 
# Documentation:
#   wirewrap.1 README PACKINGLIST
# 
# Unix wirewrap makefile:
#   Makefile
# 
# Test Data:
#   autocal
# 
# Example listing:
#   autocal.listing
# 
# ----
# Bruce Karsh
# U. Wisc. Dept. Geology and Geophysics
# 1215 W Dayton, Madison, WI 53706
# (608) 262-1697
# {ihnp4,seismo}!uwvax!geowhiz!karsh
#
echo 'Start of wirewrap program, part 01 of 02:'
echo 'x - autocal.listing'
sed 's/^X//' > autocal.listing << '/'
X         chip         pin  chip
X         name         num  position      row col
X+            Special
X         and.4081      14   4g           (17,20)
X         runff.4013    14   3g           (17,14)
X         or.4071       14   3h           (8,14)
X         count.4020    16   2h           (8,8)
X         syncff.4013   14   6h           (8,32)
X         shift.4015    16   5h           (8,26)
X         xor.4030      14   4h           (8,20)
X         shift.4015    16   5g           (17,26)
X-            Special
X         and.4081      7    4g           (11,17)
X         syncff.4013   7    6h           (2,29)
X         or.4071       7    3h           (2,11)
X         shift.4015    8    5g           (10,23)
X         runff.4013    7    3g           (11,11)
X         count.4020    8    2h           (1,5)
X         xor.4030      7    4h           (2,17)
X         shift.4015    8    5h           (1,23)
X.           
X         I/O-edge      8    1a           (49,1)
X         I/O-edge      2    1a           (55,1)
X         I/O-edge      12   1a           (45,1)
X         I/O-edge      20   1a           (37,1)
X         I/O-edge      10   1a           (47,1)
X         I/O-edge      6    1a           (51,1)
X         I/O-edge      5    1a           (52,1)
X         I/O-edge      24   1a           (33,1)
X         I/O-edge      17   1a           (40,1)
X         I/O-edge      26   1a           (31,1)
X         I/O-edge      73   1a           (49,3)
X         RUN.FF1       11   8c           (50,44)
X         I/O-edge      1    1a           (56,1)
X         I/O-edge      30   1a           (27,1)
X         I/O-edge      13   1a           (44,1)
X         I/O-edge      80   1a           (56,3)
X         I/O-edge      33   1a           (24,1)
X         I/O-edge      34   1a           (23,1)
X         I/O-edge      27   1a           (30,1)
X         count.4020    5    2h           (4,5)
X         I/O-edge      37   1a           (20,1)
X         I/O-edge      38   1a           (19,1)
X         I/O-edge      35   1a           (22,1)
X         RUN.FF2       9    2e           (28,8)
X         I/O-edge      41   1a           (17,3)
X         I/O-edge      42   1a           (18,3)
X         I/O-edge      3    1a           (54,1)
X         I/O-edge      44   1a           (20,3)
X         I/O-edge      45   1a           (21,3)
X         I/O-edge      14   1a           (43,1)
X         I/O-edge      11   1a           (46,1)
X         I/O-edge      48   1a           (24,3)
X         Buffer.4050   2    2g           (16,5)
X         I/O-edge      18   1a           (39,1)
X         I/O-edge      19   1a           (38,1)
X         I/O-edge      52   1a           (28,3)
X         I/O-edge      21   1a           (36,1)
X         I/O-edge      54   1a           (30,3)
X         Buffer.4050   4    2g           (14,5)
X         chip         pin  chip
X         name         num  position      row col
X         I/O-edge      56   1a           (32,3)
X         I/O-edge      25   1a           (32,1)
X         I/O-edge      58   1a           (34,3)
X         I/O-edge      59   1a           (35,3)
X         Buffer.4050   13   2g           (14,8)
X         I/O-edge      61   1a           (37,3)
X         I/O-edge      62   1a           (38,3)
X         I/O-edge      63   1a           (39,3)
X         I/O-edge      32   1a           (25,1)
X         I/O-edge      65   1a           (41,3)
X         I/O-edge      66   1a           (42,3)
X         I/O-edge      67   1a           (43,3)
X         I/O-edge      68   1a           (44,3)
X         I/O-edge      69   1a           (45,3)
X         I/O-edge      70   1a           (46,3)
X         I/O-edge      55   1a           (31,3)
X         I/O-edge      72   1a           (48,3)
X         RUN.FF2       10   2e           (29,8)
X         I/O-edge      74   1a           (50,3)
X         I/O-edge      75   1a           (51,3)
X         I/O-edge      76   1a           (52,3)
X         I/O-edge      77   1a           (53,3)
X         I/O-edge      78   1a           (54,3)
X         I/O-edge      47   1a           (23,3)
X         Buffer.4050   1    2g           (17,5)
X         runff.4013    2    3g           (16,11)
X         RUN.FF1       1    8c           (53,41)
X         RUN.FF1       2    8c           (52,41)
X         RUN.FF1       3    8c           (51,41)
X         RUN.FF1       4    8c           (50,41)
X         RUN.FF1       5    8c           (49,41)
X         I/O-edge      23   1a           (34,1)
X         RUN.FF1       7    8c           (47,41)
X         shift.4015    2    5h           (7,23)
X         RUN.FF1       9    8c           (48,44)
X         RUN.FF1       10   8c           (49,44)
X         shift.4015    5    5h           (4,23)
X         RUN.FF1       12   8c           (51,44)
X         RUN.FF1       13   8c           (52,44)
X         I/O-edge      31   1a           (26,1)
X         RUN.FF2       1    2e           (35,5)
X         RUN.FF2       2    2e           (34,5)
X         RUN.FF2       3    2e           (33,5)
X         RUN.FF2       4    2e           (32,5)
X         shift.4015    13   5h           (5,26)
X         RUN.FF2       6    2e           (30,5)
X         RUN.FF2       7    2e           (29,5)
X         I/O-edge      39   1a           (18,1)
X         count.4020    9    2h           (1,8)
X         Buffer.4050   10   2g           (11,8)
X         RUN.FF2       11   2e           (30,8)
X         RUN.FF2       12   2e           (31,8)
X         RUN.FF2       13   2e           (32,8)
X         RUN.FF2       14   2e           (33,8)
X         I/O-edge      46   1a           (22,3)
X         RUN.FF2       16   2e           (35,8)
X         count.4020    1    2h           (8,5)
X         I/O-edge      57   1a           (33,3)
X         chip         pin  chip
X         name         num  position      row col
X         Buffer.4050   3    2g           (15,5)
X         syncff.4013   12   6h           (6,32)
X         Buffer.4050   5    2g           (13,5)
X         I/O-edge      53   1a           (29,3)
X         Buffer.4050   7    2g           (11,5)
X         Buffer.4050   8    2g           (10,5)
X         Buffer.4050   9    2g           (10,8)
X         I/O-edge      29   1a           (28,1)
X         shift.4015    3    5h           (6,23)
X         shift.4015    4    5h           (5,23)
X         count.4020    13   2h           (5,8)
X         Buffer.4050   6    2g           (12,5)
X         RUN.FF2       15   2e           (34,8)
X         Buffer.4050   16   2g           (17,8)
X         I/O-edge      64   1a           (40,3)
X         count.4020    6    2h           (3,5)
X         shift.4015    11   5h           (3,26)
X         count.4020    4    2h           (5,5)
X         I/O-edge      36   1a           (21,1)
X         I/O-edge      7    1a           (50,1)
X         count.4020    7    2h           (2,5)
X         RUN.FF2       8    2e           (28,5)
X         shift.4015    13   5g           (14,26)
X         count.4020    12   2h           (4,8)
X         shift.4015    3    5g           (15,23)
X         I/O-edge      79   1a           (55,3)
X         syncff.4013   13   6h           (7,32)
X         I/O-edge      15   1a           (42,1)
X         count.4020    15   2h           (7,8)
X         I/O-edge      71   1a           (47,3)
X         I/O-edge      22   1a           (35,1)
X         shift.4015    12   5h           (4,26)
X         shift.4015    11   5g           (12,26)
X         I/O-edge      43   1a           (19,3)
X         I/O-edge      50   1a           (26,3)
X         RUN.FF1       6    8c           (48,41)
X         shift.4015    4    5g           (14,23)
X         RUN.FF1       14   8c           (53,44)
X10SEC       
X         I/O-edge      9    1a           (48,1)   
X         runff.4013    3    3g           (15,11)  
XGAP4        
X         xor.4030      12   4h           (6,20)   
X         I/O-edge      4    1a           (53,1)   
XPD3         
X         and.4081      6    4g           (12,17)  
X         I/O-edge      60   1a           (36,3)   
XQ           
X         UPI/O         1    10a          (37,54)  
X         runff.4013    11   3g           (14,14)  
XRON+        
X         or.4071       13   3h           (7,14)   
X         RUN.FF2       5    2e           (31,5)   
XSKEY-       
X         and.4081      1    4g           (17,17)  
X         I/O-edge      16   1a           (41,1)   
XTST+        
X         and.4081      2    4g           (16,17)  
X         chip         pin  chip
X         name         num  position      row col
X         or.4071       12   3h           (6,14)   
X         I/O-edge      28   1a           (29,1)   
X         and.4081      5    4g           (13,17)  
Xacal        
X         and.4081      10   4g           (13,20)  
X         or.4071       2    3h           (7,11)   
Xap          
X         and.4081      11   4g           (14,20)  
X         or.4071       9    3h           (3,14)   
Xapms        
X         or.4071       10   3h           (4,14)   
X         and.4081      9    4g           (12,20)  
Xbcal+       
X         I/O-edge      51   1a           (27,3)   
X         Buffer.4050   12   2g           (13,8)   
Xbgld-       
X         Buffer.4050   15   2g           (16,8)   
X         I/O-edge      49   1a           (25,3)   
Xcal+        
X         or.4071       3    3h           (6,11)   
X         Buffer.4050   11   2g           (12,8)   
Xcalena+     
X         or.4071       11   3h           (5,14)   
X         runff.4013    9    3g           (12,14)  
Xcalrun-     
X         count.4020    11   2h           (3,8)    
X         syncff.4013   4    6h           (5,29)   
X         runff.4013    1    3g           (17,11)  
X         or.4071       5    3h           (4,11)   
Xclk         
X         xor.4030      11   4h           (5,20)   
X         shift.4015    9    5h           (1,26)   
X         shift.4015    1    5g           (17,23)  
X         shift.4015    9    5g           (10,26)  
X         syncff.4013   3    6h           (6,29)   
X         shift.4015    1    5h           (8,23)   
Xclk/2       
X         syncff.4013   1    6h           (8,29)   
X         count.4020    10   2h           (2,8)    
Xclk/2-      
X         syncff.4013   5    6h           (4,29)   
X         syncff.4013   2    6h           (7,29)   
Xg           
X         I/O-edge      40   1a           (17,1)   
X         syncff.4013   10   6h           (4,32)   
X         xor.4030      13   4h           (7,20)   
X         runff.4013    4    3g           (14,11)  
X         syncff.4013   9    6h           (3,32)   
X         runff.4013    10   3g           (13,14)  
X         syncff.4013   11   6h           (5,32)   
X         syncff.4013   8    6h           (2,32)   
X         syncff.4013   6    6h           (3,29)   
Xgld-        
X         Buffer.4050   14   2g           (15,8)   
X         and.4081      3    4g           (15,17)  
Xjamrun+     
X         RUN.FF1       8    8c           (47,44)  
X         and.4081      8    4g           (11,20)  
X         chip         pin  chip
X         name         num  position      row col
X         runff.4013    12   3g           (15,14)  
Xjamrun-     
X         runff.4013    5    3g           (13,11)  
X         runff.4013    13   3g           (16,14)  
Xmp          
X         and.4081      4    4g           (14,17)  
X         or.4071       1    3h           (8,11)   
Xq10         
X         and.4081      12   4g           (15,20)  
X         count.4020    14   2h           (6,8)    
Xq13         
X         shift.4015    6    5g           (12,23)  
X         shift.4015    6    5h           (3,23)   
X         count.4020    2    2h           (7,5)    
X         shift.4015    14   5g           (15,26)  
X         and.4081      13   4g           (16,20)  
X         shift.4015    14   5h           (6,26)   
Xseq1        
X         shift.4015    5    5g           (13,23)  
X         xor.4030      8    4h           (2,20)   
Xseq12       
X         xor.4030      2    4h           (7,17)   
X         shift.4015    10   5h           (2,26)   
X         shift.4015    15   5h           (7,26)   
Xseq4        
X         shift.4015    10   5g           (11,26)  
X         xor.4030      1    4h           (8,17)   
X         shift.4015    15   5g           (16,26)  
Xseq6        
X         xor.4030      6    4h           (3,17)   
X         shift.4015    12   5g           (13,26)  
Xseq8        
X         shift.4015    2    5g           (16,23)  
X         shift.4015    7    5h           (2,23)   
Xseqi        
X         or.4071       4    3h           (5,11)   
X         shift.4015    7    5g           (11,23)  
Xseql        
X         xor.4030      3    4h           (6,17)   
X         xor.4030      5    4h           (4,17)   
Xseqm        
X         or.4071       8    3h           (2,14)   
X         xor.4030      10   4h           (4,20)   
X         or.4071       6    3h           (3,11)   
Xseqn        
X         xor.4030      4    4h           (5,17)   
X         xor.4030      9    4h           (3,20)   
Xstop+       
X         runff.4013    8    3g           (11,14)  
X         count.4020    3    2h           (6,5)    
X         runff.4013    6    3g           (12,11)  
Xsignal       pin inner wire           outer wire
Xname         num
X-            8   SPEC 1,5             SPEC 1,5
X.            9        1,8                  1,8
X-            8   SPEC 1,23            SPEC 1,23
Xclk          9   1.5  1,26 5,20       2.5  1,26 17,23 F
X.            7        2,5                  2,5
Xclk/2        10  3.0  2,8 8,29             2,8
X-            7   SPEC 2,11            SPEC 2,11
Xseqm         8   1.5  2,14 4,20            2,14
X-            7   SPEC 2,17            SPEC 2,17
Xseq1         8   2.0  2,20 13,23           2,20
Xseq8         7   2.5  2,23 16,23           2,23
Xseq12        10  2.0  2,26 7,17       1.5  2,26 7,26 E
X-            7   SPEC 2,29            SPEC 2,29
Xg            8   1.5  2,32 5,32       1.5  2,32 3,29 E
X.            6        3,5                  3,5
Xcalrun-      11  3.0  3,8 5,29             3,8
Xseqm         6        3,11            2.0  3,11 4,20 F
Xap           9   2.0  3,14 14,20           3,14
Xseq6         6   2.0  3,17 13,26           3,17
Xseqn         9   1.5  3,20 5,17            3,20
Xq13          6   2.0  3,23 12,23      3.0  3,23 7,5 F
X.            11       3,26                 3,26
Xg            6        3,29            TEST 3,29 2,32 F
Xg            9   3.0  3,32 13,14      3.5  3,32 14,11 F
X.            5        4,5                  4,5
X.            12       4,8                  4,8
Xcalrun-      5   2.0  4,11 17,11           4,11
Xapms         10  2.0  4,14 12,20           4,14
Xseql         5   1.5  4,17 6,17            4,17
Xseqm         10  TEST 4,20 2,14       TEST 4,20 3,11 E
X.            5        4,23                 4,23
X.            12       4,26                 4,26
Xclk/2-       5   1.5  4,29 7,29            4,29
Xg            10  4.5  4,32 17,1       2.0  4,32 7,20 F
X.            4        5,5                  5,5
X.            13       5,8                  5,8
Xseqi         4   2.0  5,11 11,23           5,11
Xcalena+      11  1.5  5,14 12,14           5,14
Xseqn         4   TEST 5,17 3,20            5,17
Xclk          11  TEST 5,20 1,26            5,20
X.            4        5,23                 5,23
X.            13       5,26                 5,26
Xcalrun-      4   TEST 5,29 3,8        3.0  5,29 17,11 F
Xg            11  TEST 5,32 2,32       3.0  5,32 13,14 F
Xstop+        3   2.0  6,5 11,14       1.5  6,5 12,11 E
Xq10          14  2.5  6,8 15,20            6,8
Xcal+         3   1.5  6,11 12,8            6,11
XTST+         12  2.0  6,14 16,17      3.5  6,14 29,1 F
Xseql         3   TEST 6,17 4,17            6,17
XGAP4         12  6.0  6,20 53,1            6,20
X.            3        6,23                 6,23
Xq13          14  2.0  6,26 16,20           6,26
Xclk          3   1.5  6,29 8,23       1.5  6,29 10,26 F
X.            12       6,32                 6,32
Xq13          2   3.0  7,5 15,26       TEST 7,5 3,23 F
X.            15       7,8                  7,8
Xacal         2   2.0  7,11 13,20           7,11
XRON+         13  3.5  7,14 31,5            7,14
Xsignal       pin inner wire           outer wire
Xname         num
Xseq12        2   TEST 7,17 2,26            7,17
Xg            13  2.0  7,20 14,11      TEST 7,20 4,32 F
X.            2        7,23                 7,23
Xseq12        15       7,26            TEST 7,26 2,26 F
Xclk/2-       2   TEST 7,29 4,29            7,29
X.            13       7,32                 7,32
X.            1        8,5                  8,5
X+            16  SPEC 8,8             SPEC 8,8
Xmp           1   1.5  8,11 14,17           8,11
X+            14  SPEC 8,14            SPEC 8,14
Xseq4         1   2.0  8,17 11,26      2.0  8,17 16,26 E
X+            14  SPEC 8,20            SPEC 8,20
Xclk          1   TEST 8,23 6,29            8,23
X+            16  SPEC 8,26            SPEC 8,26
Xclk/2        1   TEST 8,29 2,8             8,29
X+            14  SPEC 8,32            SPEC 8,32
X.            8        10,5                 10,5
X.            9        10,8                 10,8
X-            8   SPEC 10,23           SPEC 10,23
Xclk          9   1.5  10,26 17,23     TEST 10,26 6,29 F
X.            7        11,5                 11,5
X.            10       11,8                 11,8
X-            7   SPEC 11,11           SPEC 11,11
Xstop+        8   TEST 11,14 6,5            11,14
X-            7   SPEC 11,17           SPEC 11,17
Xjamrun+      8   5.5  11,20 47,44     1.5  11,20 15,14 E
Xseqi         7   TEST 11,23 5,11           11,23
Xseq4         10  TEST 11,26 8,17           11,26
X.            6        12,5                 12,5
Xcal+         11  TEST 12,8 6,11            12,8
Xstop+        6        12,11           TEST 12,11 6,5 F
Xcalena+      9   TEST 12,14 5,14           12,14
XPD3          6   3.5  12,17 36,3           12,17
Xapms         9   TEST 12,20 4,14           12,20
Xq13          6   TEST 12,23 3,23           12,23
X.            11       12,26                12,26
X.            5        13,5                 13,5
Xbcal+        12  2.5  13,8 27,3            13,8
Xjamrun-      5   1.5  13,11 16,14          13,11
Xg            10  TEST 13,14 3,32      TEST 13,14 5,32 F
XTST+         5   3.0  13,17 29,1           13,17
Xacal         10  TEST 13,20 7,11           13,20
Xseq1         5   TEST 13,23 2,20           13,23
Xseq6         12  TEST 13,26 3,17           13,26
X.            4        14,5                 14,5
X.            13       14,8                 14,8
Xg            4   TEST 14,11 7,20      TEST 14,11 3,32 F
XQ            11  5.5  14,14 37,54          14,14
Xmp           4   TEST 14,17 8,11           14,17
Xap           11  TEST 14,20 3,14           14,20
X.            4        14,23                14,23
X.            13       14,26                14,26
X.            3        15,5                 15,5
Xgld-         14  2.0  15,8 15,17           15,8
X10SEC        3   4.5  15,11 48,1           15,11
Xjamrun+      12       15,14           TEST 15,14 11,20 F
Xgld-         3   TEST 15,17 15,8           15,17
Xq10          12  TEST 15,20 6,8            15,20
Xsignal       pin inner wire           outer wire
Xname         num
X.            3        15,23                15,23
Xq13          14  TEST 15,26 7,5       1.5  15,26 16,20 F
X.            2        16,5                 16,5
Xbgld-        15  2.0  16,8 25,3            16,8
X.            2        16,11                16,11
Xjamrun-      13  TEST 16,14 13,11          16,14
XTST+         2   TEST 16,17 6,14           16,17
Xq13          13  TEST 16,20 6,26      TEST 16,20 15,26 F
Xseq8         2   TEST 16,23 2,23           16,23
Xseq4         15       16,26           TEST 16,26 8,17 F
Xg            40  TEST 17,1 4,32            17,1
X.            41       17,3                 17,3
X.            1        17,5                 17,5
X.            16       17,8                 17,8
Xcalrun-      1   TEST 17,11 4,11      TEST 17,11 5,29 F
X+            14  SPEC 17,14           SPEC 17,14
XSKEY-        1   4.0  17,17 41,1           17,17
X+            14  SPEC 17,20           SPEC 17,20
Xclk          1   TEST 17,23 10,26     TEST 17,23 1,26 F
X+            16  SPEC 17,26           SPEC 17,26
X.            39       18,1                 18,1
X.            42       18,3                 18,3
X.            38       19,1                 19,1
X.            43       19,3                 19,3
X.            37       20,1                 20,1
X.            44       20,3                 20,3
X.            36       21,1                 21,1
X.            45       21,3                 21,3
X.            35       22,1                 22,1
X.            46       22,3                 22,3
X.            34       23,1                 23,1
X.            47       23,3                 23,3
X.            33       24,1                 24,1
X.            48       24,3                 24,3
X.            32       25,1                 25,1
Xbgld-        49  TEST 25,3 16,8            25,3
X.            31       26,1                 26,1
X.            50       26,3                 26,3
X.            30       27,1                 27,1
Xbcal+        51  TEST 27,3 13,8            27,3
X.            29       28,1                 28,1
X.            52       28,3                 28,3
X.            8        28,5                 28,5
X.            9        28,8                 28,8
XTST+         28  TEST 29,1 13,17      TEST 29,1 6,14 F
X.            53       29,3                 29,3
X.            7        29,5                 29,5
X.            10       29,8                 29,8
X.            27       30,1                 30,1
X.            54       30,3                 30,3
X.            6        30,5                 30,5
X.            11       30,8                 30,8
X.            26       31,1                 31,1
X.            55       31,3                 31,3
XRON+         5   TEST 31,5 7,14            31,5
X.            12       31,8                 31,8
X.            25       32,1                 32,1
X.            56       32,3                 32,3
Xsignal       pin inner wire           outer wire
Xname         num
X.            4        32,5                 32,5
X.            13       32,8                 32,8
X.            24       33,1                 33,1
X.            57       33,3                 33,3
X.            3        33,5                 33,5
X.            14       33,8                 33,8
X.            23       34,1                 34,1
X.            58       34,3                 34,3
X.            2        34,5                 34,5
X.            15       34,8                 34,8
X.            22       35,1                 35,1
X.            59       35,3                 35,3
X.            1        35,5                 35,5
X.            16       35,8                 35,8
X.            21       36,1                 36,1
XPD3          60  TEST 36,3 12,17           36,3
X.            20       37,1                 37,1
X.            61       37,3                 37,3
XQ            1   TEST 37,54 14,14          37,54
X.            19       38,1                 38,1
X.            62       38,3                 38,3
X.            18       39,1                 39,1
X.            63       39,3                 39,3
X.            17       40,1                 40,1
X.            64       40,3                 40,3
XSKEY-        16  TEST 41,1 17,17           41,1
X.            65       41,3                 41,3
X.            15       42,1                 42,1
X.            66       42,3                 42,3
X.            14       43,1                 43,1
X.            67       43,3                 43,3
X.            13       44,1                 44,1
X.            68       44,3                 44,3
X.            12       45,1                 45,1
X.            69       45,3                 45,3
X.            11       46,1                 46,1
X.            70       46,3                 46,3
X.            10       47,1                 47,1
X.            71       47,3                 47,3
X.            7        47,41                47,41
Xjamrun+      8   TEST 47,44 11,20          47,44
X10SEC        9   TEST 48,1 15,11           48,1
X.            72       48,3                 48,3
X.            6        48,41                48,41
X.            9        48,44                48,44
X.            8        49,1                 49,1
X.            73       49,3                 49,3
X.            5        49,41                49,41
X.            10       49,44                49,44
X.            7        50,1                 50,1
X.            74       50,3                 50,3
X.            4        50,41                50,41
X.            11       50,44                50,44
X.            6        51,1                 51,1
X.            75       51,3                 51,3
X.            3        51,41                51,41
X.            12       51,44                51,44
X.            5        52,1                 52,1
Xsignal       pin inner wire           outer wire
Xname         num
X.            76       52,3                 52,3
X.            2        52,41                52,41
X.            13       52,44                52,44
XGAP4         4   TEST 53,1 6,20            53,1
X.            77       53,3                 53,3
X.            1        53,41                53,41
X.            14       53,44                53,44
X.            3        54,1                 54,1
X.            78       54,3                 54,3
X.            2        55,1                 55,1
X.            79       55,3                 55,3
X.            1        56,1                 56,1
X.            80       56,3                 56,3
X WIRE LENGTH SUMMARY
X -------------------
X
X Wire   Number
XLength   Used
X1.5       18
X2.0       19
X2.5       4
X3.0       8
X3.5       4
X4.0       1
X4.5       2
X5.5       2
X6.0       1
XTotal number of wires used: 59
/
echo 'x - readin.c'
sed 's/^X//' > readin.c << '/'
X#include "wirewrap.h"
X#include <ctype.h>
X#define GETLINE(A) { scanf("%79[^\n]%*[^\n]%*c",A); inputline++;}
X#define PAD(A) {for(j=strlen(A);j<NAMELENGTH;j++)A[j]=' '; A[NAMELENGTH]=0; }
Xextern char *cnvtnump; /* Defined in cmvtnump.c */
Xextern int *cnvtnumv; /* Defined in cmvtnump.c */
Xint errorlevel=0;
X/*
X** readin - read in the chip description file.
X**
X** Sorry about all the gotos.  This is a finite
X** state machine.
X*/
X
X/* getcmd - try to get a command from the input stream.
X** Branches to: 
X**   endinput     if eof occurs.
X**   dochip       if a :chip command occurs.
X**   dospecial    if a :special command occurs.
X**   getcmd       if anything else occurs.
X*/
Xreadin()
X{
Xstruct chip *newchip;
Xstruct signallist *setptr(),*localptr;
Xchar token[80],errorline[132];
Xint count,i,j,stat,found;
X
Xgetcmd:
X  stat=gettoken(token);
X  if(stat == -1) goto endinput;
X  if(token[0] == ':')
X    {
X    if(strlen(token) <= NAMELENGTH)
X      {
X      PAD(token);
X      if(!namecmp2(token,CHIPTOKEN))
X        goto dochip;
X      if(!namecmp2(token,SPECIALTOKEN))
X        goto dospecial;
X      }
X    sprintf(errorline,"Invalid command: %15.15s",token);
X    error(errorline);
X    goto getcmd;
X    }
X  sprintf(errorline,"Invalid item: %15.15s",token);
X  error(errorline);
X  goto getcmd;
X
X/* dochip - Processes a :chip command.
X** Branches to:
X**   endinput     if eof occurs.
X**   dochip       if a :chip command occurs.
X**   dospecial    if a :special command occurs.
X*/
Xdochip:
X  stat=gettoken(token); /* Trying to get a chip name. */
X  if(stat == -1)
X    {
X    error("End of file reached too soon.");
X    goto endinput;
X    }
X  if(token[0] == ':')
X    {
X    if(strlen(token) <= NAMELENGTH)
X      {
X      PAD(token);
X      if(!namecmp2(token,CHIPTOKEN))
X        {
X        sprintf(errorline,"Duplicate :chip command");
X        error(errorline);
X	goto dochip;
X        }
X      if(!namecmp2(token,SPECIALTOKEN))
X        {
X        sprintf(errorline,
X           "The rest of the preceeding :chip command is missing:",
X           token);
X        error(errorline);
X        goto dospecial;
X        }
X      }
X    sprintf(errorline,"Invalid command: %15.15s",token);
X    error(errorline);
X    goto getcmd;
X    }
X  if(strlen(token) > NAMELENGTH)
X    {
X    sprintf(errorline,"Chip name is too long: %15.15s",token);
X    error(errorline);
X    }
X  PAD(token);
X  /* Allocate a new chip. */
X  newchip = (struct chip *) malloc( sizeof(struct chip));
X  if(!newchip)
X    {
X    sprintf(errorline,"No space for chip: %15.15s",token);
X    fatal(errorline);  /* No return */
X    }
X  /* Fill in the chipname field. */
X  PAD(token);
X  for(i=0;i<NAMELENGTH;i++)newchip->name[i]=token[i];
X
X  stat=gettoken(token); /* Trying to get a chip position. */
X  if(stat == -1)
X    {
X    error("End of file reached too soon.");
X    goto endinput;
X    }
X  if(token[0] == ':')
X    {
X    if(strlen(token) <= NAMELENGTH)
X      {
X      PAD(token);
X      if( !namecmp2(token,CHIPTOKEN) )
X        {
X        error("The rest of the preceeding :chip command is missing");
X        goto dochip;
X        }
X      if( (!namecmp2(token,SPECIALTOKEN)) || (!namecmp2(token,CHIPTOKEN)) )
X        {
X        sprintf(errorline,
X           "The rest of the preceeding :chip command is missing:",
X           token);
X        error(errorline);
X        }
X      }
X    sprintf(errorline,"Invalid command: %15.15s",token);
X    error(errorline);
X    goto getcmd;
X    }
X  if(strlen(token) >= NAMELENGTH)
X    {
X    sprintf(errorline,"Chip position name is too long: %15.15s",token);
X    error(errorline);
X    }
X  PAD(token);
X  for(i=0;i<NAMELENGTH;i++)newchip->position[i]=token[i];
X
X  stat=gettoken(token); /* Trying to get a pincount. */
X  if(stat == -1)
X    {
X    error("End of file reached too soon.");
X    goto endinput;
X    }
X  if(token[0] == ':')
X    {
X    if(strlen(token) <= NAMELENGTH)
X      {
X      if( !namecmp2(token,CHIPTOKEN) )
X        {
X        error("The rest of the preceeding :chip command is missing");
X        goto dochip;
X        }
X      if( (!namecmp2(token,SPECIALTOKEN)) || (!namecmp2(token,CHIPTOKEN)) )
X        {
X        sprintf(errorline,
X           "The rest of the preceeding :chip command is missing:",
X           token);
X        error(errorline);
X        goto dospecial;
X        }
X      }
X    sprintf(errorline,"Invalid command: %15.15s",token);
X    error(errorline);
X    goto getcmd;
X    }
X  i=cnvtnum(token);
X  newchip->pincount=i;
X  if(!cnvtnumv)
X    {
X    sprintf(errorline,"Invalid pin count specified: %15.15s",token);
X    error(errorline);
X    }
X  else if(*cnvtnump != 0)
X    {
X    sprintf(errorline,"Pin count field is badly formatted: %15.15s",token);
X    error(errorline);
X    }
X  else if(i < 0)
X    {
X    sprintf(errorline,"Pin count field is negative: %15.15s",token);
X    error(errorline);
X    }
X  else if(i < 0)
X    {
X    sprintf(errorline,"Pin count field is zero.");
X    error(errorline);
X    }
X
X  stat=gettoken(token); /* Trying to get a chip width. */
X  if(stat == -1)
X    {
X    error("End of file reached too soon.");
X    goto endinput;
X    }
X  if(token[0] == ':')
X    {
X    if(strlen(token) <= NAMELENGTH)
X      {
X      if( !namecmp2(token,CHIPTOKEN) )
X        {
X        error("The rest of the preceeding :chip command is missing");
X        goto dochip;
X        }
X      if( (!namecmp2(token,SPECIALTOKEN)) || (!namecmp2(token,CHIPTOKEN)) )
X        {
X        sprintf(errorline,
X           "The rest of the preceeding :chip command is missing:",
X           token);
X        error(errorline);
X        goto dospecial;
X        }
X      }
X    sprintf(errorline,"Invalid command: %15.15s",token);
X    error(errorline);
X    goto getcmd;
X    }
X  i=cnvtnum(token);
X  newchip->width=i;
X  if(!cnvtnumv)
X    {
X    sprintf(errorline,"Invalid width specified: %15.15s",token);
X    error(errorline);
X    }
X  else if(*cnvtnump != 0)
X    {
X    sprintf(errorline,"Width field is badly formatted: %15.15s",token);
X    error(errorline);
X    }
X  else if(i < 0)
X    {
X    sprintf(errorline,"Width field is negative: %15.15s",token);
X    error(errorline);
X    }
X
X  stat=gettoken(token); /* Trying to get pin 1's row number. */
X  if(stat == -1)
X    {
X    error("End of file reached too soon.");
X    goto endinput;
X    }
X  if(token[0] == ':')
X    {
X    if(strlen(token) <= NAMELENGTH)
X      {
X      if( !namecmp2(token,CHIPTOKEN) )
X        {
X        error("The rest of the preceeding :chip command is missing");
X        goto dochip;
X        }
X      if( (!namecmp2(token,SPECIALTOKEN)) || (!namecmp2(token,CHIPTOKEN)) )
X        {
X        sprintf(errorline,
X           "The rest of the preceeding :chip command is missing:",
X           token);
X        error(errorline);
X        goto dospecial;
X        }
X      }
X    sprintf(errorline,"Invalid command: %15.15s",token);
X    error(errorline);
X    goto getcmd;
X    }
X  i=cnvtnum(token);
X  newchip->row1=i;
X  if(!cnvtnumv)
X    {
X    sprintf(errorline,"Invalid row specified: %15.15s",token);
X    error(errorline);
X    }
X  else if(*cnvtnump != 0)
X    {
X    sprintf(errorline,"Row field is badly formatted: %15.15s",token);
X    error(errorline);
X    }
X
X  stat=gettoken(token); /* Trying to get pin 1's column number. */
X  if(stat == -1)
X    {
X    error("End of file reached too soon.");
X    goto endinput;
X    }
X  if(token[0] == ':')
X    {
X    if(strlen(token) <= NAMELENGTH)
X      {
X      if( !namecmp2(token,CHIPTOKEN) )
X        {
X        error("The rest of the preceeding :chip command is missing");
X        goto dochip;
X        }
X      if( (!namecmp2(token,SPECIALTOKEN)) || (!namecmp2(token,CHIPTOKEN)) )
X        {
X        sprintf(errorline,
X           "The rest of the preceeding :chip command is missing:",
X           token);
X        error(errorline);
X        goto dospecial;
X        }
X      }
X    sprintf(errorline,"Invalid command: %15.15s",token);
X    error(errorline);
X    goto getcmd;
X    }
X  i=cnvtnum(token);
X  newchip->col1=i;
X  if(!cnvtnumv)
X    {
X    sprintf(errorline,"Invalid col specified: %15.15s",token);
X    error(errorline);
X    }
X  else if(*cnvtnump != 0)
X    {
X    sprintf(errorline,"Col field is badly formatted: %15.15s",token);
X    error(errorline);
X    }
X
X  stat=gettoken(token); /* Trying to get pin 1's orientation number. */
X  if(stat == -1)
X    {
X    error("End of file reached too soon.");
X    goto endinput;
X    }
X  if(token[0] == ':')
X    {
X    if(strlen(token) <= NAMELENGTH)
X      {
X      if( !namecmp2(token,CHIPTOKEN) )
X        {
X        error("The rest of the preceeding :chip command is missing");
X        goto dochip;
X        }
X      if( (!namecmp2(token,SPECIALTOKEN)) || (!namecmp2(token,CHIPTOKEN)) )
X        {
X        sprintf(errorline,
X           "The rest of the preceeding :chip command is missing:",
X           token);
X        error(errorline);
X        goto dospecial;
X        }
X      }
X    sprintf(errorline,"Invalid command: %15.15s",token);
X    error(errorline);
X    goto getcmd;
X    }
X  i=cnvtnum(token);
X  newchip->orientation=i;
X  if(!cnvtnumv)
X    {
X    sprintf(errorline,"Invalid orientation specified: %15.15s",token);
X    error(errorline);
X    }
X  else if(*cnvtnump != 0)
X    {
X    sprintf(errorline,"Orientation field is badly formatted: %15.15s",token);
X    error(errorline);
X    }
X  else if(i < 1 || i > 4)
X    {
X    sprintf(errorline,
X            "Orientation must be either 1, 2, 3, or 4:  %15.15s",token);
X    error(errorline);
X    }
X
X  for(count=0; count < newchip->pincount; count++)
X    {
X    stat=gettoken(token); /* Trying to get a chip name. */
X    if(stat == -1)
X      {
X      sprintf(errorline,"Not enough signal names read in for chip %12.12s.",
X              newchip->name);
X      goto endinput;
X      }
X    if(token[0] == ':')
X      {
X      if(strlen(token) <= NAMELENGTH)
X        {
X        if(!namecmp2(token,CHIPTOKEN))
X          {
X          sprintf(errorline,
X                  ":chip command occured before all signals were read in.");
X          error(errorline);
X          }
X        if(!namecmp2(token,SPECIALTOKEN))
X          {
X          sprintf(errorline,":special command occured before all signals were read in.");
X          goto dospecial;
X          }
X        }
X      sprintf(errorline,"Invalid command: %15.15s",token);
X      error(errorline);
X      goto getcmd;
X      }
X    PAD(token);
X    if(strlen(token) != NAMELENGTH)
X      {
X      sprintf(errorline,"Signal name is too long: %5.15s",token);
X      error(errorline);
X      }
X    PAD(token);
X    if(nextfree >= numpins)
X      {
X      sprintf(errorline,"Too many pins, maximum is %d : %15.15s",numpins,token);
X      error(errorline);
X      }
X    pinarray[nextfree].signalname = setptr(token);
X    pinarray[nextfree].mychip=newchip;
X    pinarray[nextfree].pinnum=count+1;
X    pinarray[nextfree].inner = -1;
X    pinarray[nextfree].outer = -1;
X    setrowandcol(&pinarray[nextfree]);
X    nextfree = nextfree + 1;
X    }
X
X  for(;;)
X    {
X    stat=gettoken(token); /* Trying to get any excess signal names. */
X    if(stat == -1) goto endinput;
X    if(token[0] == ':')
X      {
X      if(strlen(token) <= NAMELENGTH)
X        {
X        PAD(token);
X        if(!namecmp2(token,CHIPTOKEN))
X          goto dochip;
X        if(!namecmp2(token,SPECIALTOKEN))
X          goto dospecial;
X        }
X      sprintf(errorline,"Invalid command: %15.15s",token);
X      error(errorline);
X      goto getcmd;
X      }
X    sprintf(errorline,"More signals than pins on chip %12.12s : %15.15s"
X          ,newchip->name,token);
X    error(errorline);
X    }
X
Xdospecial:
X/* 
X** dospecial - Processes a :special command.
X** Branches to:
X**   getcmd
X**   dospecial
X**   endinput
X**   dochip
X*/
Xstat=gettoken(token);
Xif(stat == -1) goto endinput;
Xif(token[0] == ':')
X  {
X  if(strlen(token) <= NAMELENGTH)
X    {
X    if(!namecmp2(token,CHIPTOKEN))
X      {
X      error(":CHIP statements must not follow :special statements");
X      goto dochip;
X      }
X    if(!namecmp2(token,SPECIALTOKEN))
X      {
X      error("Duplicate :SPECIAL command.");
X      goto dospecial;
X      }
X    }
X  sprintf(errorline,"Invalid command: %15.15s",token);
X  error(errorline);
X  goto getcmd;
X  }
Xif(strlen(token) > NAMELENGTH)
X  {
X  sprintf(errorline,"Special name is too long: %15.15s",token);
X  error(errorline);
X  goto dospecial;
X  }
Xfound=0;
Xlocalptr=siglistleader;
XPAD(token);
Xwhile((localptr != 0) && (!found))
X  {
X  if(namecmp2(localptr->signalname,token))
X    localptr = localptr->succ;
X  else
X    {
X    localptr->special=1;
X    found=1;
X    }
X  }
Xif(!found)
X  {
X  sprintf(errorline,"Special signal is never used: %12.12s",token);
X  error(errorline);
X  }
Xgoto dospecial;
X
X/*
X** endinput - end of input processor.
X*/
Xendinput: ;
X  if(errorlevel != 0)
X    {
X    printf("Errors were detected.  Program terminated.\n");
X    exit(9);
X    }
X  return;
X}
Xerror(s)
Xchar *s;
X{
Xerrorlevel=1;
Xprintf("Error, Line %d, %s\n",inputline,s);
Xlinenum++;
X}
Xfatal(s)
Xchar *s;
X{
Xerrorlevel=1;
Xprintf("Fatal, Line %d, %s\n",inputline,s);
Xprintf("Error was fatal, Program terminated\n");
Xexit(10);
X}
/
echo 'x - setptr.c'
sed 's/^X//' > setptr.c << '/'
X/***********************************************************
X*  setptr - Converts from a signal name to a pointer	   *
X*           to an entry in the signallist.  If the	   *
X*           signal name isn't already in the signallist,   *
X*           then an entry for it is added.	           *
X***********************************************************/
X
X#include "wirewrap.h"
X
Xstruct signallist *setptr(signalname)
Xchar *signalname;
X{
Xint i;
Xstruct signallist *localptr;
X
Xlocalptr = siglistleader;
Xwhile (localptr != 0)
X  {
X  if(namecmp(localptr->signalname,signalname))
X    localptr = localptr->succ;
X  else
X    break;
X  }
Xif(localptr==0)
X  {
X  localptr=(struct signallist *)malloc(sizeof(struct signallist));
X  for(i=0;i<12;i++)localptr->signalname[i]=signalname[i];
X  localptr->succ = siglistleader;
X  localptr->special = 0;
X  siglistleader = localptr;
X  }
X return(localptr);
X}
/
echo 'x - wirewrap.1'
sed 's/^X//' > wirewrap.1 << '/'
X.tr ~.
X.TH WIREWRAP 1 geowhiz
X.SH NAME
Xwirewrap - Wire Wrap List Generator
X.SH SYNOPSIS
X.I wirewrap
X> outputfile < inputfile
X.SH DESCRIPTION
X.I Wirewrap
Xinputs a file consisting of description of 
Xa wirewrap board.  It outputs three listings which
Xare intended to aid the wrapping, debugging, and maintanance of
Xthe board.  The input data file is designed to be easy to prepare
Xfrom a schematic diagram of the board.
X.PP
XThe input consists of a list of descriptions of the placements and
Xsignals for each chip.  Following this list is (optionally) a blank
Xline followed by a list of "special signal names" which will be
Xdescribed later.
X.SH INPUT FORMAT
XData is entered in free format.  Comments are surrounded by /* ... */ as
Xin C source programs.  The input consists of a sequence of :chip statements
Xoptionally followed by a sequence of :special statements.
X.PP
XThe :chip statement describes the 
Xlocation of a component and the signals on its pins.
XThe :chip statement is made up of the word ``:chip'' followed by:
X.PP
X.TP 10
X.B Name
X( IC1, 74c123, Stuffer, FF3, etc )
X.RE
X.TP 10
X.B Grid
X( Position in the component matrix; A5, B2, etc )
X.RE
X.TP 10
X.B Npins
X( Number of pins for this component; 8, 14, 16, 20, etc )
X.RE
X.TP 10
X.B Width
X( Spacing between rows of pins on this component in 1/10'th inches.
X0=SIP, 3=normal dip)
X.RE
X.TP 10
X.B Row
X( Position of pin 1 in the pin matrix )
X.RE
X.TP 10
X.B Column
X( Position of pin 1 in the pin matrix )
X.RE
X.TP 10
X.B Orientation
X( Orientation (i.e. rotation) of component; 1-4. SEE BELOW )
X.RE
X.TP 10
X.B Sig_name_for_pin_1
X.RE
X.TP 10
X.B Sig_name_for_pin_2
X.RE
X.TP 10
X\(bu
X.RE
X.TP 10
X\(bu
X.RE
X.TP 10
X\(bu
X.RE
X.TP 10
X.B Sig_name_for_pin_Npin
X.RE
X.PP
XA pin without a signal on it must have a ``.'' entry to show that it's `unused'.
X.PP
X.ne 10
XThe orientation entrys are as follows (viewing component side):
X.PP
X.nf
X.cs 1 21
X                        +----+               1         1/----+
X        +--------+      |    |      +--------\\          |    |
X        |   1    |      |  2 |      |   3    |          |  4 |
X        \\--------+      |    |      +--------+          |    |
X        1               +----/1                         +----+
X.cs
X.fi
X.PP
X.ne 15
XThe Row,Col numbering system is as follows:
X.PP
X.nf
X.cs 1 21
X                                                0   C o l #
X                ^                             0 +--------------->
X                |                               |
X              R |   Component                 R |   Wireing
X              o |   Side                      o |   Side
X              w |   Viewing                   w |   Viewing
X              # |   Chips                     # |   Pins
X                |                               |
X              0 +--------------->               V
X                0   C o l #
X.cs
X.fi
X.PP
XThe Name and Grid fields are provided as a means of identifying
Xthe components.  The wirewrap program does not use these fields
Xfor placement or routing.  They are passed through to the output
Xlistings as a way to refer the listings back to the schematics.
X.PP
XThe :special statement can direct the wirewrap program to handle special
Xsignals like power and ground, or any signal requiring special attention
Xfor routing.  These signal names are entered following the word ``:special''.
X.SH EXAMPLE
X.PP
X.nf
X.cs 1 21
X                         SIGA
X    ______________________________________________________________
X    |                                                            |
X    |   |---- \\              |---- \\              |---- \\        |
X    ----|1      \\   SIGB  ---|4      \\   SIGC  ---|8      \\      |
X     |  |      3 |0-------|  |      6 |0-------|  |     10 |0----|  
X     ---|2      /         ---|5      /         ---|9      /    
X        |---- /              |---- /              |---- /      
X.cs
X.fi
X.PP
X.PP
XIn this example, a 3 stage ring oscillator is made up of a single chip.
XThe chip is packaged as a standard 14 pin DIP.
XThe chip is placed in the lower left corner of the board, in orientation
X1.
X(Viewing from the wiring side, facing pins, as in the above diagram.)
XThis is postion A1 on the circuit board.
XThe power and ground for this circuit are on pins 14 and 7 respectively,
Xand are both special signals since, for example, they are implemented by
Xetched traces on the board.
X.PP
X:chip
X.br
XIC1-Osc                       /* Name */
X.br
XA1                            /* Grid */
X.br
X14                            /* Npins */
X.br
X3                             /* Width */
X.br
X0                             /* Row */
X.br
X0                             /* Col */
X.br
X1                             /* Orientation */
X.br
XSIGA                          /* Pin 1. */
X.br
XSIGA                          /* Pin 2. */
X.br
XSIGB                          /* Pin 3. */
X.br
XSIGB                          /* Pin 4. */
X.br
XSIGB                          /* Pin 5. */
X.br
XSIGC                          /* Pin 6. */
X.br
XGND                           /* Pin 7. */
X.br
XSIGC                          /* Pin 8. */
X.br
XSIGC                          /* Pin 9. */
X.br
XSIGA                          /* Pin 10. */
X.br
X~                             /* Pin 11. */
X.br
X~                             /* Pin 12. */
X.br
X~                             /* Pin 13. */
X.br
X5V                            /* Pin 14. */
X.br
X:special                      /* Start of special signals */
X.br
X5V                            /* 5V is a special signal. */
X.br
XGND                           /* GND is also a special signal. */
X.PP
X.ne 10
XSince the input is free format, This could be written more succinctly as:
X.PP
X:chip
XIC1-Osc A1 14 3 0 0 1
X.br
XSIGA SIGA SIGB SIGB SIGB SIGC GND
X.br
XSIGC SIGC SIGA .    .    .    5V
X.br
X:special 5V GND
X.SH AUTHOR
XBruce Karsh, University of Wisconsin, Department of Geology & Geophysics
X.br
XAugust 16, 1985
/
echo 'Part 01 of wirewrap program complete.'
exit