One more check on valid display which is known to be in the startup
[xcircuit.git] / examples / vcoblock.ps
bloba14f01e5759226ce0a3bf85af19907849bbc1165
1 %!PS-Adobe-3.0 EPSF-3.0
2 %%Title: vcoblock
3 %%Creator: Xcircuit v2.3
4 %%CreationDate: Thu Jun 21 10:22:03 2001
5 %%Pages: 1
6 %%BoundingBox: 68 68 529 537
7 %%DocumentNeededResources: font Times-Roman font Times-Italic 
8 %%EndComments
9 %%BeginProlog
11 %  PostScript prolog for output from xcircuit
12 %  Version: 2.3
14 %  Electrical circuit (and otherwise general) drawing program
16 %  Written by Tim Edwards 8/5/93--5/16/01  (tim@bach.ece.jhu.edu)
17 %  The Johns Hopkins University
19 %%BeginResource: procset XCIRCproc 2.3 1
20 % supporting definitions --- these are the primary xcircuit types.
22 /XCIRCsave save def
23 /topmat matrix currentmatrix def
25 /fontslant { /slant exch def [1 0 slant 1 0 0] 
26     exch findfont exch makefont dup length dict /ndict exch def
27     { 1 index /FID ne { ndict 3 1 roll put } { pop pop } ifelse } forall
28     ndict definefont pop} def
29 /ul { dup type /stringtype eq showflag 1 eq and { gsave 
30    currentpoint topmat setmatrix 0 0 moveto 2 index stringwidth pop (_)
31    false charpath flattenpath pathbbox grestore exch pop 1 index
32    sub setlinewidth exch pop currentpoint 3 -1 roll add moveto 0
33    rlineto stroke moveto } if } def
34 /ol { dup type /stringtype eq showflag 1 eq and { gsave gsave
35    currentpoint topmat setmatrix 2 index stringwidth pop 3 index
36    true charpath flattenpath pathbbox grestore exch pop
37    exch pop topmat setmatrix (_) true charpath pathbbox grestore
38    exch pop 1 index sub setlinewidth exch pop currentpoint
39    exch 4 1 roll exch sub add moveto pop 0 rlineto stroke
40    moveto } if } def
41 /stW { gsave currentpoint newpath moveto true charpath flattenpath
42         pathbbox pop exch pop sub grestore } def
43 /Ts {mark Tabs aload pop counttomark 1 add array astore /Tabs exch def Tabs
44         0 currentpoint pop put} def
45 /Tbn {mark Tabs aload pop counttomark dup 2 add 1 roll cleartomark 1 sub} def
46 /Tb { 0 1 Tbn {Tabs exch get dup currentpoint pop lt
47         {currentpoint exch pop moveto exit} {pop} ifelse } for } def
48 /Tf { Tbn -1 0 {Tabs exch get dup currentpoint pop gt
49         {currentpoint exch pop moveto exit} {pop} ifelse } for } def
50 /qS { (aa) stW (a a) stW sub 4 div 0 Kn } def
51 /hS { qS qS } def
52 /pspc 0 def
53 /cf0 { scalefont setfont } bind def
54 /Kn { dup kY add /kY exch def rmoveto } bind def
55 /ss { /fscale fscale 0.67 mul def currentfont 0.67 cf0 0 fscale0 fscale mul
56         0.33 mul neg Kn} def
57 /Ss { /fscale fscale 0.67 mul def currentfont 0.67 cf0 0 fscale0 fscale mul
58         0.67 mul Kn } def
59 /ns { 0 kY neg Kn /kY 0 def /fscale 1.0 def xfont0 1.0 cf0 } def
60 /CR { ns 0 /Bline Bline fscale0 neg add def Bline moveto } def
61 /cf { dup type /realtype ne {1.0} if exch findfont exch kY 0 eq
62         { 40 mul dup /fscale0 exch def cf0 /xfont0 currentfont def}
63         {fscale0 mul fscale mul cf0} ifelse } def
64 /ctmk { counttomark dup 2 add -1 roll pop } bind def
65 /label { gsave translate 0 0 moveto dup scale /rotval exch def /just exch def
66         just 16 and 0 gt {0 1 dtransform gsave pagemat setmatrix idtransform
67         exch grestore 1 0 dtransform gsave pagemat setmatrix idtransform
68         exch grestore dup 0 eq {pop mul 0 gt} {3 1 roll pop pop 0 lt} ifelse
69         {-1 /just just dup 3 and 1 ne {3 xor} if def} {1} ifelse exch 0 lt
70         {-1 /just just dup 12 and 4 ne {12 xor} if def} {1} ifelse scale }
71         if /showflag 0 def /fspc pspc def /Bline 0 def /Tabs 0 array def
72         /fscale 1.0 def /kY 0 def
73         gsave dup 1 add copy 0 exch {exch dup type /stringtype eq {true
74         charpath flattenpath} {exec} ifelse } repeat pop pathbbox grestore
75         3 -1 roll pop 3 1 roll just 1 and 0 gt {just 2 and 0 gt {exch pop
76         neg fspc sub} {exch sub 0.5 mul neg} ifelse} {pop neg fspc add}
77         ifelse exch Bline exch just 4 and 0 gt {just 8 and 0 gt {exch pop
78         neg fspc sub} {add 0.5 mul neg} ifelse} {pop neg fspc add} ifelse
79         /showflag 1 def rotval rotate Kn currentpoint translate
80         /Bline 0 def /Tabs 0 array def /fscale 1.0 def /kY 0 def
81         {dup type /stringtype eq {show}{exec} ifelse} repeat grestore } def
82 /pinlabel { hlevel 0 eq { /pspc 20 def label /pspc 0 def }
83         { pop pop pop pop pop {pop} repeat } ifelse } def
84 /pinglobal { pinlabel } def
85 /infolabel { pinlabel } def
87 /scb { setrgbcolor } bind def  /sce { defColor aload pop scb } bind def
88 /cRedef {/defColor currentcolor 3 array astore def} def
89 /begingate { /hlevel hlevel 1 add def /defColor currentcolor sce 3 array
90         astore def gsave sce translate 0 0 moveto dup 0 lt
91         {neg 1 sub -1 1 scale} if rotate dup scale } bind def
92 /makeparm  {3 string cvs dup length 1 add string /tstr exch def tstr exch
93         1 exch putinterval tstr 0 (v) putinterval tstr cvn} bind def
94 /beginparm { -1 1 {makeparm exch def} for
95         dup type /arraytype eq { aload length -1 1 {makeparm exch def}
96         for } if begingate } bind def
97 /endgate { /hlevel hlevel 1 sub def grestore defColor aload pop cRedef
98         scb} bind def
100 /hlevel 0 def
101 /tmpa [1 0 0 1 0 0] def
102 /gar {8 8 true tmpa {<c0 c0 00 00 0c 0c 00 00>} imagemask} bind
103 {8 8 true tmpa {<30 70 60 02 03 07 06 20>} imagemask} bind
104 {8 8 true tmpa {<0c 1e 1e 0c c0 e1 e1 c0>} imagemask} bind
105 {8 8 true tmpa {<0f 0f 0f 0f f0 f0 f0 f0>} imagemask} bind
106 {8 8 true tmpa {<3f f3 e1 e1 f3 3f 1e 1e>} imagemask} bind
107 {8 8 true tmpa {<df cf 8f 9f fd fc f8 f9>} imagemask} bind
108 {8 8 true tmpa {<ff 3f 3f ff ff f3 f3 ff>} imagemask} bind 7 array astore def
109 /ppaint { gsave clip tmpa dup setmatrix pathbbox neg exch neg 4 2 roll
110   neg 4 -1 roll 2 copy gt {exch} if 8 div ceiling 8 mul 4 2 roll neg 2 copy
111   gt {exch} if 8 div ceiling 8 mul 3 -1 roll -8 5 -1 roll
112   { 3 index exch 5 exch put dup -8 3 index { 3 index
113   exch 4 exch put 3 index exec } for } for pop pop pop pop grestore } bind def
114 /setstyles {
115   currentlinewidth mul setlinewidth /style exch def
116   style 1 and 0 gt not {closepath} if
117   style 2 and 0 gt {currentlinewidth 4 mul dup 2 array astore 0 setdash} if 
118   style 4 and 0 gt {0.5 currentlinewidth 4 mul 2 array astore 0 setdash} if 
119   style dup 256 ge exch 480 lt and { gsave 1 setgray eofill grestore } if
120   style 16 and 0 gt { gsave style 224 and -5 bitshift dup 7 lt
121         {gar exch get ppaint} { pop eofill } ifelse grestore } if
122   style 8 and 0 gt style 512 eq or { newpath } { stroke } ifelse grestore } def
124 /polygon { gsave /num exch def moveto num 1 sub {lineto} repeat setstyles } def
125 /xcarc   { gsave newpath arc setstyles } def
126 /elb { matrix currentmatrix 7 -1 roll 7 -1 roll translate 5 1 roll 4 -1 roll
127         3 index div 1 scale } def
128 /ele { 0 4 1 roll 0 4 1 roll } bind def
129 /ellipse { gsave elb newpath ele arc setmatrix setstyles } def
130 /pellip  { elb ele arc setmatrix } def
131 /nellip  { elb ele arcn setmatrix } def
132 /spline  { gsave moveto curveto setstyles } def
133 /polyc   { {lineto} repeat } bind def
134 /beginpath { gsave moveto } bind def
135 /endpath { setstyles } bind def
136 /bop     { 1 setlinecap 0 setlinejoin 6 setmiterlimit 0 0 0 scb cRedef } def
137 /insertion {/PSobj save def /showpage {} def bop translate} def
138 /end_insert {PSobj restore} def
139 /setpagemat {/pagemat matrix currentmatrix def} def
140 /inchscale  {setpagemat 0.375 mul dup scale} def
141 /cmscale    {setpagemat 0.35433071 mul dup scale} def
143 %%EndResource
144 %%EndProlog
146 % XCircuit output starts here.
148 /arrowhead {
149 % -12 -32 24 36 bbox
150 % trivial
151 begingate
152 8 -28 beginpath
153 3 -18 3 -15 0 0 curveto
154 -3 -15 -3 -18 -8 -28 curveto
155 -2 -26 2 -26 8 -28 curveto
156 249  1.00 endpath
157 endgate
158 } def
160 /npn {
161 % -64 -64 72 128 bbox
162 begingate
163 1  1.00 -48 0 -64 0 2 polygon
164 1  1.00 -48 48 -48 -48 2 polygon
165 1  1.00 0 48 -48 22 2 polygon
166 1  1.00 0 48 0 64 2 polygon
167 1  1.00 0 -48 -48 -22 2 polygon
168 1  1.00 0 -48 0 -64 2 polygon
169 1.00 240 0 -48 arrowhead
170 1.000 0.000 0.000 scb
171 (C) {/Times-Roman cf} 2 9 0 1.00 0 64 pinlabel
172 (B) {/Times-Roman cf} 2 7 0 1.00 -64 0 pinlabel
173 (E) {/Times-Roman cf} 2 13 0 1.00 0 -64 pinlabel
175 (spice:Q%i %pC %pB %pE npn) {/Times-Roman cf} 2 4 0 1.00 -244 -139 infolabel
177 (sim:b %pB %pE %pC) {/Times-Roman cf} 2 4 0 1.00 -244 -187 infolabel
178 endgate
179 } def
181 /invert {
182 % -48 -40 112 80 bbox
183 % trivial
184 begingate
185 0  1.00 -32 -40 -32 40 40 0 3 polygon
186 1  1.00 48 0 8 0.00 360.00 xcarc
187 1  1.00 -32 0 -48 0 2 polygon
188 1  1.00 56 0 64 0 2 polygon
189 1.000 0.000 0.000 scb
190 (Out) {/Times-Roman cf} 2 4 0 1.00 64 0 pinlabel
191 (In) {/Times-Roman cf} 2 7 0 1.00 -48 0 pinlabel
192 endgate
193 } def
195 /polarized {
196 % -32 -64 64 128 bbox
197 begingate
198 1  1.00 0 -64 0 -6 2 polygon
199 1  1.00 0 64 0 6 2 polygon
200 1  1.00 -32 6 32 6 2 polygon
201 1  1.00 0 -80 74 66.00 114.00 xcarc
202 1.000 0.000 0.000 scb
203 (t) {/Times-Roman cf} 2 9 0 1.00 0 64 pinlabel
204 (b) {/Times-Roman cf} 2 13 0 1.00 0 -64 pinlabel
206 (spice:C%i %pt %pb 1.0P) {/Times-Roman cf} 2 0 0 1.00 -208 -160 infolabel
208 (sim:e %pt %pb %pb) {/Times-Roman cf} 2 0 0 1.00 -208 -208 infolabel
209 endgate
210 } def
212 /source {
213 % -32 -64 64 128 bbox
214 % hidden
215 begingate
216 1  1.00 0 0 32 0.00 360.00 xcarc
217 1  1.00 0 32 0 64 2 polygon
218 1  1.00 0 -32 0 -64 2 polygon
219 endgate
220 } def
222 /isource {
223 % -32 -64 64 128 bbox
224 begingate
225 1.00 0 0 0 source
226 1  0.75 0 20 0 -8 2 polygon
227 0.80 180 0 -20 arrowhead
228 1.000 0.000 0.000 scb
229 (i.p) {/Times-Roman cf} 2 9 0 1.00 0 64 pinlabel
230 (i.m) {/Times-Roman cf} 2 13 0 1.00 0 -64 pinlabel
231 endgate
232 } def
234 /diode {
235 % -8 -48 36 96 bbox
236 begingate
237 248  1.00 -18 -16 0 16 18 -16 3 polygon
238 1  1.00 0 -48 0 -16 2 polygon
239 1  1.00 0 48 0 16 2 polygon
240 1  1.00 -18 16 18 16 2 polygon
241 1.000 0.000 0.000 scb
242 (d.m) {/Times-Roman cf} 2 9 0 1.00 0 48 pinlabel
243 (d.p) {/Times-Roman cf} 2 13 0 1.00 0 -48 pinlabel
244 endgate
245 } def
247 /gnd {
248 % -32 -60 64 68 bbox
249 % trivial
250 begingate
251 1  1.00 0 0 0 -32 2 polygon
252 1  1.00 -32 -32 32 -32 2 polygon
253 1  1.00 -18 -46 18 -46 2 polygon
254 1  1.00 -4 -60 4 -60 2 polygon
255 1.000 0.000 0.000 scb
256 (GND) {/Times-Roman cf} 2 1 0 1.00 0 0 pinglobal
257 endgate
258 } def
260 %%Page: vcoblock 1
261 %%PageOrientation: Portrait
262 /pgsave save def bop
263 % 626 494 offsets
264 1.6800 inchscale
265 2.6000 setlinewidth
267 1  1.00 466 686 274 686 2 polygon
268 1  1.00 338 462 402 462 2 polygon
269 1  1.00 370 462 370 558 2 polygon
270 1  1.00 370 558 274 558 2 polygon
271 1  1.00 274 590 274 526 2 polygon
272 1  1.00 466 590 466 526 2 polygon
273 1  1.00 274 398 274 366 2 polygon
274 1  1.00 274 366 466 366 2 polygon
275 1  1.00 466 366 466 398 2 polygon
276 1  1.00 370 206 370 174 2 polygon
277 1  1.00 370 814 370 846 2 polygon
278 1  1.00 338 846 402 846 2 polygon
279 1  1.00 658 622 658 494 2 polygon
280 1  1.00 658 494 770 558 2 polygon
281 1  1.00 770 558 658 622 2 polygon
282 1  1.00 466 558 658 558 2 polygon
283 1  1.00 666 582 698 582 2 polygon
284 1  1.00 698 582 698 534 2 polygon
285 1  1.00 714 534 682 534 2 polygon
286 1  1.00 682 534 682 582 2 polygon
287 1  1.00 786 558 834 558 2 polygon
288 1  1.00 834 558 834 270 2 polygon
289 1  1.00 434 270 530 270 2 polygon
290 1  1.00 642 270 834 270 2 polygon
291 4  1.00 258 190 258 334 450 334 450 190 4 polygon
292 4  1.00 194 702 194 814 434 814 434 702 4 polygon
293 4  1.00 514 190 514 334 642 334 642 190 4 polygon
294 4  1.00 130 382 130 526 482 526 482 382 4 polygon
295 4  1.00 114 174 114 590 498 590 498 174 4 polygon
296 4  1.00 642 478 642 734 802 734 802 478 4 polygon
297 0  1.00 778 558 8 0.00 360.00 xcarc
298 (C) {/Times-Italic cf} 2 7 0 1.00 546 494 label
299 (Current) {/Times-Roman cf} 2 3 0 0.80 322 766 label
300 (Source) {/Times-Roman cf} 2 3 0 0.80 322 734 label
301 (Current) {/Times-Roman cf} 2 3 0 0.80 258 462 label
302 (Mirror) {/Times-Roman cf} 2 3 0 0.80 258 430 label
303 (Switch) {/Times-Roman cf} 2 3 0 0.80 370 254 label
304 (Inverter) {/Times-Roman cf} 2 1 0 0.80 578 206 label
305 (Schmitt) {/Times-Roman cf} 2 1 0 0.80 722 670 label
306 (Trigger) {/Times-Roman cf} 2 1 0 0.80 722 638 label
307 (Current) {/Times-Roman cf} 2 0 0 0.80 130 302 label
308 (Steering) {/Times-Roman cf} 2 0 0 0.80 130 270 label
309 (Network) {/Times-Roman cf} 2 0 0 0.80 130 238 label
310 (Inverting) {/Times-Roman cf} 2 1 0 0.75 722 702 label
311 1  1.00 370 334 370 366 2 polygon
312 248  1.00 370 462 6 0.00 360.00 xcarc
313 248  1.00 370 366 6 0.00 360.00 xcarc
314 248  1.00 274 558 6 0.00 360.00 xcarc
315 248  1.00 466 558 6 0.00 360.00 xcarc
316 248  1.00 594 558 6 0.00 360.00 xcarc
317 248  1.00 370 686 6 0.00 360.00 xcarc
318 1.00 0 466 462 npn
319 1.00 -1 274 462 npn
320 1.00 -1 370 270 npn
321 1.00 -1 594 270 invert
322 1.00 0 594 494 polarized
323 1.00 0 370 750 isource
324 1.00 -181 466 638 diode
325 1.00 -181 274 638 diode
326 1.00 0 370 174 gnd
327 1.00 0 594 430 gnd
328 pgsave restore showpage
330 %%Trailer
331 XCIRCsave restore
332 %%EOF