One more check on valid display which is known to be in the startup
[xcircuit.git] / examples / buses.ps
blob4d61508c5e2fefba2b41b25689f8b8a83903bb54
1 %!PS-Adobe-3.0 EPSF-3.0
2 %%Title: buses
3 %%Creator: Xcircuit v3.2
4 %%CreationDate: Thu May 20 17:13:16 2004
5 %%Pages: 1
6 %%BoundingBox: 68 68 607 463
7 %%DocumentNeededResources: font Times-Roman font Helvetica font Helvetica-Bold 
8 %%+ font Symbol 
9 %%EndComments
10 %%BeginProlog
12 %  PostScript prolog for output from xcircuit
13 %  Version: 3.1
15 %  Electrical circuit (and otherwise general) drawing program
17 %  Written by Tim Edwards 8/5/93--1/5/04  (tim@bach.ece.jhu.edu)
18 %  The Johns Hopkins University
20 %%BeginResource: procset XCIRCproc 3.1 0
22 % supporting definitions --- these are the primary xcircuit types.
24 /XCIRCsave save def
25 /topmat matrix currentmatrix def
27 /fontslant { /slant exch def [1 0 slant 1 0 0] 
28     exch findfont exch makefont dup length dict /ndict exch def
29     { 1 index /FID ne { ndict 3 1 roll put } { pop pop } ifelse } forall
30     ndict definefont pop} def
31 /ul { dup type /stringtype eq showflag 1 eq and { gsave 
32    currentpoint topmat setmatrix 0 0 moveto 2 index stringwidth pop (_)
33    false charpath flattenpath pathbbox grestore exch pop 1 index
34    sub setlinewidth exch pop currentpoint 3 -1 roll add moveto 0
35    rlineto stroke moveto } if } def
36 /ol { dup type /stringtype eq showflag 1 eq and { gsave gsave
37    currentpoint topmat setmatrix 2 index stringwidth pop 3 index
38    true charpath flattenpath pathbbox grestore exch pop
39    exch pop topmat setmatrix (_) true charpath pathbbox grestore
40    exch pop 1 index sub setlinewidth exch pop currentpoint
41    exch 4 1 roll exch sub add moveto pop 0 rlineto stroke
42    moveto } if } def
43 /stW { gsave currentpoint newpath moveto true charpath flattenpath
44         pathbbox pop exch pop sub grestore } def
45 /Ts {mark Tabs aload pop counttomark 1 add array astore /Tabs exch def Tabs
46         0 currentpoint pop put} def
47 /Tbn {mark Tabs aload pop counttomark dup 2 add 1 roll cleartomark 1 sub} def
48 /Tb { 0 1 Tbn {Tabs exch get dup currentpoint pop lt
49         {currentpoint exch pop moveto exit} {pop} ifelse } for } def
50 /Tf { Tbn -1 0 {Tabs exch get dup currentpoint pop gt
51         {currentpoint exch pop moveto exit} {pop} ifelse } for } def
52 /qS { (aa) stW (a a) stW sub 4 div 0 Kn } def
53 /hS { qS qS } def
54 /pspc 0 def
55 /cf0 { scalefont setfont } bind def
56 /Kn { dup kY add /kY exch def rmoveto } bind def
57 /ss { /fscale fscale 0.67 mul def currentfont 0.67 cf0 0 fscale0 fscale mul
58         0.33 mul neg Kn} def
59 /Ss { /fscale fscale 0.67 mul def currentfont 0.67 cf0 0 fscale0 fscale mul
60         0.67 mul Kn } def
61 /ns { 0 kY neg Kn /kY 0 def /fscale 1.0 def xfont0 1.0 cf0 } def
62 /CR { ns 0 /Bline Bline fscale0 neg add def Bline moveto } def
63 /cf { dup type /realtype ne {1.0} if exch findfont exch kY 0 eq
64         { 40 mul dup /fscale0 exch def cf0 /xfont0 currentfont def}
65         {fscale0 mul fscale mul cf0} ifelse } def
66 /ctmk { counttomark dup 2 add -1 roll pop } bind def
67 /label { gsave translate 0 0 moveto dup scale neg /rotval exch def
68         /just exch def just 384 and 0 gt {/mshow {pop} def} {/mshow {show}
69         def} ifelse just 16 and 0 gt {gsave rotval rotate 0 1 dtransform
70         gsave pagemat setmatrix idtransform exch grestore 1 0 dtransform
71         gsave pagemat setmatrix idtransform exch grestore dup abs 1e-9 lt
72         {pop mul 0 gt} {3 1 roll pop pop 0 lt} ifelse grestore {-1 /rotval
73         rotval neg def /just just dup 3 and 1 ne {3 xor} if def} {1} ifelse
74         exch -1e-9 lt {-1 /rotval rotval neg def /just just dup 12 and
75         4 ne {12 xor} if def} {1} ifelse scale } if /showflag 0 def
76         /fspc pspc def /Bline 0 def /Tabs 0 array def /fscale 1.0 def
77         /kY 0 def gsave dup 1 add copy 0 exch 1 0 dtransform exch atan rotate
78         {exch dup type /stringtype eq {true charpath flattenpath} {dup type
79         /arraytype eq {exec} {12 string cvs true charpath flattenpath} ifelse}
80         ifelse} repeat pop pathbbox grestore 3 -1 roll pop 3 1 roll just
81         1 and 0 gt {just 2 and 0 gt {exch pop neg fspc sub} {exch sub 0.5
82         mul neg} ifelse} {pop neg fspc add} ifelse exch Bline exch just 4
83         and 0 gt {just 8 and 0 gt {exch pop neg fspc sub} {add 0.5 mul neg}
84         ifelse} {pop neg fspc add} ifelse rotval rotate Kn currentpoint
85         translate /showflag 1 def /Bline 0 def /Tabs 0 array def /fscale
86         1.0 def /kY 0 def {dup type /stringtype eq {mshow} {dup type
87         /arraytype eq {exec} {12 string cvs mshow} ifelse} ifelse} repeat
88         grestore } def
89 /pinlabel { 4 index 32 and 0 ne hlevel 0 eq or { /pspc 10 def label
90         /pspc 0 def } { pop pop pop pop pop {pop} repeat } ifelse } def
91 /pinglobal { pinlabel } def
92 /infolabel { pinlabel } def
94 /scb { setrgbcolor } bind def  /sce { defColor aload pop scb } bind def
95 /cRedef {/defColor currentcolor 3 array astore def} def
96 /begingate {dup type /dicttype ne {1 dict} if begin     % default params
97         dup type /dicttype ne {1 dict} if begin         % instanced params
98         /hlevel hlevel 1 add def /defColor currentcolor sce 3 array
99         astore def gsave sce translate 0 0 moveto neg rotate dup abs scale
100         } bind def
101 /endgate { /hlevel hlevel 1 sub def grestore defColor aload pop cRedef
102         scb end end} bind def
104 /hlevel 0 def
105 /tmpa [1 0 0 1 0 0] def
106 /gar {8 8 true tmpa {<c0 c0 00 00 0c 0c 00 00>} imagemask} bind
107 {8 8 true tmpa {<30 70 60 02 03 07 06 20>} imagemask} bind
108 {8 8 true tmpa {<0c 1e 1e 0c c0 e1 e1 c0>} imagemask} bind
109 {8 8 true tmpa {<0f 0f 0f 0f f0 f0 f0 f0>} imagemask} bind
110 {8 8 true tmpa {<3f f3 e1 e1 f3 3f 1e 1e>} imagemask} bind
111 {8 8 true tmpa {<df cf 8f 9f fd fc f8 f9>} imagemask} bind
112 {8 8 true tmpa {<ff 3f 3f ff ff f3 f3 ff>} imagemask} bind 7 array astore def
113 /ppaint { gsave clip tmpa dup setmatrix pathbbox neg exch neg 4 2 roll
114   neg 4 -1 roll 2 copy gt {exch} if 8 div ceiling 8 mul 4 2 roll neg 2 copy
115   gt {exch} if 8 div ceiling 8 mul 3 -1 roll -8 5 -1 roll
116   { 3 index exch 5 exch put dup -8 3 index { 3 index
117   exch 4 exch put 3 index exec } for } for pop pop pop pop grestore } bind def
118 /setstyles {
119   currentlinewidth mul setlinewidth /style exch def
120   style 1 and 0 gt not {closepath} if
121   style 2 and 0 gt {currentlinewidth 4 mul dup 2 array astore 0 setdash} if
122   style 4 and 0 gt {0.5 currentlinewidth 4 mul 2 array astore 0 setdash} if
123   gsave style 16 and 0 gt { style 224 and -5 bitshift style 256 and 0 gt {
124   7 exch sub 8 div dup 1 exch sub currentrgbcolor 3 array astore
125   {3 copy mul add 4 1 roll pop} forall pop pop setrgbcolor eofill}
126   {dup 7 lt {gar exch get ppaint} {pop eofill} ifelse} ifelse}
127   {style 256 and 0 gt {1 setgray eofill} if} ifelse grestore style 8 and 0 gt 
128   style 512 eq or {newpath} {stroke} ifelse grestore} def     
130 /polygon { gsave /num exch def moveto num 1 sub {lineto} repeat setstyles } def
131 /xcarc   { gsave newpath arc setstyles } def
132 /elb { matrix currentmatrix 7 -1 roll 7 -1 roll translate 5 1 roll 4 -1 roll
133         3 index div 1 scale } def
134 /ele { 0 4 1 roll 0 4 1 roll } bind def
135 /ellipse { gsave elb newpath ele arc setmatrix setstyles } def
136 /pellip  { elb ele arc setmatrix } def
137 /nellip  { elb ele arcn setmatrix } def
138 /spline  { gsave moveto curveto setstyles } def
139 /polyc   { {lineto} repeat } bind def
140 /beginpath { gsave moveto } bind def
141 /endpath { setstyles } bind def
142 /bop     { 1 setlinecap 0 setlinejoin 6 setmiterlimit 0 0 0 scb cRedef } def
143 /psinsertion {/PSobj save def /showpage {} def /setpagedevice {pop} def bop
144         rotate translate dup scale} def
145 /end_insert {PSobj restore} def
146 /setpagemat {/pagemat matrix currentmatrix def} def
147 /inchscale  {setpagemat 0.375 mul dup scale} def
148 /cmscale    {setpagemat 0.35433071 mul dup scale} def
150 %%EndResource
151 %%EndProlog
153 % XCircuit output starts here.
155 %%BeginDocumentSetup
157 /test_ic {
158 <</idx (?) >> begingate
159 0 1.00 -112 -112 -112 128 128 128 128 -112 4 polygon
160 (test_ic) {/Helvetica-Bold cf} 2 21 0 1.00 0 48 label
161 (rdata\(7:0\)) {/Helvetica cf} 2 23 0 1.00 112 -16 label
162 1.000 0.000 0.000 scb
163 (\(9:2\)) {/Helvetica cf} 2 20 0 1.00 128 -16 pinlabel
164 (1) {/Helvetica cf} 2 17 0 1.00 0 128 pinlabel
165 (10) {/Helvetica cf} 2 29 0 1.00 0 -112 pinlabel
167 (VDD) {/Helvetica cf} 2 29 0 1.00 0 112 label
168 (GND) {/Helvetica cf} 2 17 0 1.00 0 -96 label
169 0.180 0.545 0.341 scb
170 mark idx (pcb:U) {/Helvetica cf} ctmk 23 0 1.00 -128 48 infolabel
172 mark idx (U) {/Helvetica cf} ctmk 23 0 1.00 -128 0 label
173 endgate
174 } def
176 /5V {
177 % trivial
178 begingate
179 1 1.00 -32 0 32 0 2 polygon
180 1 1.00 0 0 0 -32 2 polygon
181 (V) {/Times-Roman cf} (+5) {/Symbol cf} 4 17 0 0.90 0 8 label
182 0.933 0.604 0.000 scb
183 (dVdd) {/Times-Roman cf} 2 13 0 1.00 0 -32 pinglobal
184 endgate
185 } def
187 /gnd {
188 % trivial
189 begingate
190 1 1.00 0 0 0 -32 2 polygon
191 1 1.00 -32 -32 32 -32 2 polygon
192 1 1.00 -18 -46 18 -46 2 polygon
193 1 1.00 -4 -60 4 -60 2 polygon
194 0.933 0.604 0.000 scb
195 (GND) {/Times-Roman cf} 2 1 0 1.00 0 0 pinglobal
196 endgate
197 } def
199 /Resistor {
200 <</p_rot 0 /p_jst 20 /idx (?) /units (k) /value (1.0) >> begingate
201 1 1.00 0 64 0 36 2 polygon
202 1 1.00 0 -64 0 -36 2 polygon
203 1 1.00 0 -36 14 -30 -14 -18 14 -6 -14 6 14 18 -14 30 0 36 8 polygon
204 1.000 0.000 0.000 scb
205 (1) {/Times-Roman cf} 2 9 0 1.00 0 64 pinlabel
206 (2) {/Times-Roman cf} 2 13 0 1.00 0 -64 pinlabel
207 0.180 0.545 0.341 scb
208 mark units value ( %p1 %p2 ) idx (spice:R) {/Times-Roman cf} ctmk 4 0 1.00 -208 
209 -160 infolabel
210 (sim:r %p1 %p2) {/Times-Roman cf} 2 4 0 1.00 -208 -208 infolabel
212 mark (W) {/Symbol cf} units {hS} value {/Times-Roman cf} ctmk p_jst p_rot 1.00 
213 32 0 label
214 0.180 0.545 0.341 scb
215 mark idx (pcb:R) {/Times-Roman cf} ctmk 20 0 1.00 -208 -256 infolabel
216 endgate
217 } def
219 /ic2 {
220 <</idx (?) >> begingate
221 0 1.00 -112 -96 -112 112 112 112 112 -96 4 polygon
222 1.000 0.000 0.000 scb
223 (\(2:3\)) {/Helvetica cf} 2 23 0 1.00 -112 16 pinlabel
224 (1) {/Helvetica cf} 2 29 0 1.00 0 -96 pinlabel
225 (4) {/Helvetica cf} 2 17 0 1.00 0 112 pinlabel
227 (IC#2) {/Helvetica-Bold cf} 2 21 0 1.00 0 16 label
228 (d) {/Helvetica cf} 2 20 0 1.00 -96 16 label
229 (GND) {/Helvetica cf} 2 17 0 1.00 0 -80 label
230 (VDD) {/Helvetica cf} 2 29 0 1.00 0 96 label
231 0.180 0.545 0.341 scb
232 mark idx (pcb:U) {/Helvetica cf} ctmk 20 0 1.00 128 64 infolabel
234 mark idx (U) {/Helvetica cf} ctmk 20 0 1.00 128 16 label
235 endgate
236 } def
238 /Polarized {
239 <</p_rot 0 /p_jst 20 /idx (?) /units (p) /value (1.0) >> begingate
240 1 1.00 0 -64 0 -6 2 polygon
241 1 1.00 0 64 0 6 2 polygon
242 1 1.00 -32 6 32 6 2 polygon
243 1 1.00 0 -80 74 66.00 114.00 xcarc
244 1.000 0.000 0.000 scb
245 (1) {/Times-Roman cf} 2 9 0 1.00 0 64 pinlabel
246 (2) {/Times-Roman cf} 2 13 0 1.00 0 -64 pinlabel
247 0.180 0.545 0.341 scb
248 mark units value ( %p1 %p2 ) idx (spice:C) {/Times-Roman cf} ctmk 4 0 1.00 -208 
249 -160 infolabel
250 (sim:e %p1 %p2) {/Times-Roman cf} 2 4 0 1.00 -208 -208 infolabel
252 mark (F) units {hS} value {/Times-Roman cf} ctmk p_jst p_rot 1.00 48 0 label
253 0.180 0.545 0.341 scb
254 mark idx (pcb:C) {/Times-Roman cf} ctmk 20 0 1.00 -208 -256 infolabel
255 endgate
256 } def
258 /tap {
259 % trivial
260 <</out (bus\(0\)) /in (bus\(0:7\)) >> begingate
261 496 1.00 0 8 16 0 0 -8 3 polygon
262 1.000 0.000 0.000 scb
263 mark out {/Helvetica cf} ctmk 20 0 1.00 16 0 pinlabel
264 mark in {/Helvetica cf} ctmk 23 0 1.00 0 0 pinlabel
265 endgate
266 } def
268 /arrowhead {
269 % trivial
270 begingate
271 8 -28 beginpath
272 3 -18 3 -15 0 0 curveto
273 -3 -15 -3 -18 -8 -28 curveto
274 -2 -26 2 -26 8 -28 curveto
275 249 1.00 endpath
276 endgate
277 } def
279 /arrow {
280 % trivial
281 begingate
282 1 0.80 0 -40 0 20 2 polygon
283 1.00 0 0 40 arrowhead
284 endgate
285 } def
288 %%EndDocumentSetup
290 %%Page: bustest 1
291 %%PageOrientation: Portrait
292 /pgsave save def bop
293 1.0000 inchscale
294 2.6000 setlinewidth 1093 852 translate
296 1 1.00 -592 -384 -336 -384 -336 288 -300 288 4 polygon
297 1.000 0.000 0.000 scb
298 (mynet\(0:7\)) {/Helvetica cf} 2 20 0 1.00 -300 288 pinlabel
300 1 1.00 -320 -224 160 -224 2 polygon
301 1 1.00 -320 -144 48 -144 2 polygon
302 1 1.00 -320 -64 -32 -64 2 polygon
303 1.000 0.000 0.000 scb
304 (mynet\(0\)) {/Helvetica cf} 2 23 0 1.00 -360 -64 pinlabel
305 (mynet\(1:2\)) {/Helvetica cf} 2 23 0 1.00 -360 -144 pinlabel
306 (mynet\(4:3\)) {/Helvetica cf} 2 23 0 1.00 -360 -224 pinlabel
308 1 1.00 -320 -304 -32 -304 2 polygon
309 1.000 0.000 0.000 scb
310 (mynet\(4\)) {/Helvetica cf} 2 23 0 1.00 -360 -304 pinlabel
312 1.00 0 -720 -368 <</idx (3) >> test_ic
313 1.00 0 -720 -208 5V
314 1.00 0 -720 -480 gnd
315 1 1.00 -32 -64 -32 176 2 polygon
316 -1.00 270 64 176 <</idx (1) /p_jst 17 /p_rot 90 >> Resistor
317 1 1.00 0 176 -32 176 2 polygon
318 1 1.00 128 176 176 176 2 polygon
319 1.00 0 176 144 gnd
320 1.00 0 272 -80 <</idx (2) >> ic2
321 -1.00 0 -32 -416 <</idx (1) >> Polarized
322 1 1.00 -32 -304 -32 -352 2 polygon
323 1.00 0 -32 -480 gnd
324 1.00 0 336 -432 <</idx (1) >> ic2
325 1 1.00 160 -224 160 -416 224 -416 3 polygon
326 1 1.00 48 -144 48 -64 160 -64 3 polygon
327 1.00 0 336 -528 gnd
328 1.00 0 272 -176 gnd
329 1.00 0 272 64 5V
330 1.00 0 336 -288 5V
331 1 1.00 176 144 176 176 2 polygon
332 1.00 0 -336 -64 tap
333 1.00 0 -336 -144 <</out (bus\(1:2\)) >> tap
334 1.00 0 -336 -224 <</out (bus\(4:3\)) >> tap
335 1.00 0 -336 -304 <</out (bus\(4\)) >> tap
336 1.000 0.000 0.000 scb
337 (mynet\(0\)) {/Times-Roman cf} 2 20 0 0.70 -784 216 pinlabel
338 (mynet\(1\)) {/Times-Roman cf} 2 20 0 0.70 -784 184 pinlabel
339 (mynet\(2\)) {/Times-Roman cf} 2 20 0 0.70 -784 152 pinlabel
340 (mynet\(3\)) {/Times-Roman cf} 2 20 0 0.70 -784 120 pinlabel
341 (mynet\(4\)) {/Times-Roman cf} 2 20 0 0.70 -784 88 pinlabel
342 (mynet\(5\)) {/Times-Roman cf} 2 20 0 0.70 -784 56 pinlabel
343 (mynet\(6\)) {/Times-Roman cf} 2 20 0 0.70 -784 24 pinlabel
344 (mynet\(7\)) {/Times-Roman cf} 2 20 0 0.70 -784 -8 pinlabel
346 2 1.00 -816 -40 -816 248 -640 248 -640 -40 4 polygon
347 (on each of the pin labels below.) {CR} (Try connectivity \(Alt-w\)) 
348 {/Times-Roman cf} 4 16 0 0.70 -820 272 label
349 -1.00 225 -296 -16 arrow
350 (symbol.) {CR} (labels in the "tap") {CR} (defined by the) {CR} (subnets are) 
351 {/Times-Roman cf} 8 16 0 0.70 -260 28 label
352 -1.00 150 -464 -8 arrow
353 (for reference.) {CR} (These labels are) {/Times-Roman cf} 4 17 0 0.70 -492 48 
354 label
355 -1.00 255 -48 312 arrow
356 (nothing at all.) {CR} (also valid to write "mynet" here, or) {CR} 
357 (spelled out explicitly.  However, it is) {CR} 
358 (The bus name and dimensions can be) {/Times-Roman cf} 8 16 0 0.70 16 272 label
359 (XCircuit bus notation tutorial\320buses.ps) {/Times-Roman cf} 2 16 0 0.70 -848 
360 -656 label
361 pgsave restore showpage
363 %%Trailer
364 XCIRCsave restore
365 %%EOF