home *** CD-ROM | disk | FTP | other *** search
- From: panda!talcott!uwvax!geowhiz!karsh
- Subject: Wirewrap program, part 01 of 02
- Reply-To: karsh@geowhiz.UUCP (Bruce Karsh)
- Keywords: wirewrap circuit board construction cad cadcam cam pc chip
- Newsgroups: mod.sources
- Approved: john@genrad.UUCP
-
- 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)
- Xsignal 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
- Xsignal 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
- Xsignal 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
- Xsignal 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
- Xsignal 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
-
-
-