root/trunk/jps2ps/package/logic.pps

Revision 4, 19.4 kB (checked in by jms, 8 months ago)

Chargement de jps2ps dans le SVN.

Line 
1 /uselogic {} def
2 /logicUnit .5 def
3 /logicNInput 2 def
4 /logicWireLength .5 def
5
6 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7
8 /AND_dic 15 dict def
9 /AND_dim {
10    logicWireLength neg 0 jtoppoint
11    4.5 logicUnit mul logicWireLength add 4 logicUnit mul jtoppoint
12 } def
13 /AND {
14 gsave
15 8 dict begin
16    currentpoint translate
17    /h_and 4 logicUnit mul def
18    /inter h_and logicNInput div def
19    0   0 logicUnit mulv /z1 defpoint
20    0   4 logicUnit mulv /z2 defpoint
21    2.5 4 logicUnit mulv /z3 defpoint
22    4.5 2 logicUnit mulv /z4 defpoint
23    2.5 0 logicUnit mulv /z5 defpoint
24    [z1 -- z2 -- z3 {right} .. {down} z4 .. {left} z5 -- z1] draw
25    [z4 z4 logicWireLength 0 addv] ligne
26    /i 0 def
27    logicNInput {
28       AND_dic (in) i chaine cvs append cvlit
29          [ logicWireLength neg inter i .5 add mul ] cvx put
30       /i i 1 add store
31    } repeat
32    AND_dic /out {4.5 2 logicUnit mulv logicWireLength 0 addv} bind put
33    /i 0 def
34    logicNInput {
35       [ 0 inter i .5 add mul dupp logicWireLength neg 0 addv] ligne
36       /i i 1 add store
37    } repeat
38    /logicNInput 2 store
39 end
40 grestore
41 } def
42
43 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
44
45 /NAND_dic 15 dict def
46 /NAND_dim {
47    logicWireLength neg 0 jtoppoint
48    5.1 logicUnit mul logicWireLength add 4 logicUnit mul jtoppoint
49 } def
50 /NAND {
51 gsave
52 8 dict begin
53    currentpoint translate
54    /h_nand 4 logicUnit mul def
55    /inter h_nand logicNInput div def
56    0   0 logicUnit mulv /z1 defpoint
57    0   4 logicUnit mulv /z2 defpoint
58    2.5 4 logicUnit mulv /z3 defpoint
59    4.5 2 logicUnit mulv /z4 defpoint
60    2.5 0 logicUnit mulv /z5 defpoint
61    [z1 -- z2 -- z3 {right} .. {down} z4 .. {left} z5 -- z1] draw
62    z4 .3 logicUnit mul 0 addv .3 logicUnit mul cercle
63    [z4 .6 logicUnit mul 0 addv dupp logicWireLength 0 addv] ligne
64    /i 0 def
65    NAND_dic /out {5.1 2 logicUnit mulv logicWireLength 0 addv} bind put
66    logicNInput {
67       NAND_dic (in) i chaine cvs append cvlit
68          [ logicWireLength neg inter i .5 add mul ] cvx put
69       /i i 1 add store
70    } repeat
71    /i 0 def
72    logicNInput {
73       [ 0 inter i .5 add mul dupp logicWireLength neg 0 addv] ligne
74       /i i 1 add store
75    } repeat
76    /logicNInput 2 store
77 end
78 grestore
79 } def
80
81 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
82
83 /OR_dic 15 dict def
84 /OR_dim {
85    logicWireLength neg 0 jtoppoint
86    4.5 logicUnit mul logicWireLength add 4 logicUnit mul jtoppoint
87 } def
88 /OR {
89 gsave
90 8 dict begin
91    currentpoint translate
92    /h_or 4 logicUnit mul def
93    /inter h_or logicNInput div def
94    0   0 logicUnit mulv /z1 defpoint
95    0   4 logicUnit mulv /z2 defpoint
96    1.5 4 logicUnit mulv /z3 defpoint
97    4.5 2 logicUnit mulv /z4 defpoint
98    1.5 0 logicUnit mulv /z5 defpoint
99    .75 2 logicUnit mulv /z6 defpoint
100    [z4 dupp logicWireLength 0 addv] ligne
101    /i 0 def
102    OR_dic /out {4.5 2 logicUnit mulv logicWireLength 0 addv} bind put
103    logicNInput {
104       OR_dic (in) i chaine cvs append cvlit
105          [ logicWireLength neg inter i .5 add mul ] cvx put
106       /i i 1 add store
107    } repeat
108    /i 0 def
109    logicNInput {
110       [logicUnit inter i .5 add mul dupp logicWireLength neg logicUnit sub 0 addv] ligne
111       /i i 1 add store
112    } repeat
113    gsave
114    newpath
115       z1 smoveto
116       [z1 .. z6 .. z2] draw_
117       [z2 z3] ligne_
118       [z3 {right} .. {1 -2} z4] draw_
119       [z4 {-1 -2} .. {left} z5] draw_
120       [z5 z1] ligne_
121       blanc fill
122    grestore
123    [z1 .. z6 .. z2] draw
124    [z2 z3] ligne
125    [z3 {right} .. {1 -2} z4] draw
126    [z4 {-1 -2} .. {left} z5] draw
127    [z5 z1] ligne
128    /logicNInput 2 store
129 end
130 grestore
131 } def
132
133 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
134
135 /NOR_dic 15 dict def
136 /NOR_dim {
137    logicWireLength neg 0 jtoppoint
138    5.1 logicUnit mul logicWireLength add 4 logicUnit mul jtoppoint
139 } def
140 /NOR {
141 gsave
142 8 dict begin
143    currentpoint translate
144    /h_nor 4 logicUnit mul def
145    /inter h_nor logicNInput div def
146    0   0 logicUnit mulv /z1 defpoint
147    0   4 logicUnit mulv /z2 defpoint
148    1.5 4 logicUnit mulv /z3 defpoint
149    4.5 2 logicUnit mulv /z4 defpoint
150    1.5 0 logicUnit mulv /z5 defpoint
151    .75 2 logicUnit mulv /z6 defpoint
152    z4 .3 logicUnit mul 0 addv .3 logicUnit mul cercle
153    [z4 .6 logicUnit mul 0 addv dupp logicWireLength 0 addv] ligne
154    /i 0 def
155    NOR_dic /out {5.1 2 logicUnit mulv logicWireLength 0 addv} bind put
156    logicNInput {
157       NOR_dic (in) i chaine cvs append cvlit
158          [ logicWireLength neg inter i .5 add mul ] cvx put
159       /i i 1 add store
160    } repeat
161    /i 0 def
162    logicNInput {
163       [logicUnit inter i .5 add mul dupp logicWireLength neg logicUnit sub 0 addv] ligne
164       /i i 1 add store
165    } repeat
166    gsave
167    newpath
168       z1 smoveto
169       [z1 .. z6 .. z2] draw_
170       [z2 z3] ligne_
171       [z3 {right} .. {1 -2} z4] draw_
172       [z4 {-1 -2} .. {left} z5] draw_
173       [z5 z1] ligne_
174       blanc fill
175    grestore
176    [z1 .. z6 .. z2] draw
177    [z2 z3] ligne
178    [z3 {right} .. {1 -2} z4] draw
179    [z4 {-1 -2} .. {left} z5] draw
180    [z5 z1] ligne
181    /logicNInput 2 store
182 end
183 grestore
184 } def
185
186 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
187
188 /XOR_dic 15 dict def
189 /XOR_dim {
190    logicWireLength neg 0 jtoppoint
191    5.25 logicUnit mul logicWireLength add 4 logicUnit mul jtoppoint
192 } def
193 /XOR {
194 gsave
195 8 dict begin
196    currentpoint translate
197    /h_xor 4 logicUnit mul def
198    /inter h_xor logicNInput div def
199    .75  0 logicUnit mulv /z1 defpoint
200    .75  4 logicUnit mulv /z2 defpoint
201    2.25 4 logicUnit mulv /z3 defpoint
202    5.25 2 logicUnit mulv /z4 defpoint
203    2.25 0 logicUnit mulv /z5 defpoint
204    1.5  2 logicUnit mulv /z6 defpoint
205    0    0 logicUnit mulv /z7 defpoint
206    0    4 logicUnit mulv /z8 defpoint
207    .75  2 logicUnit mulv /z9 defpoint
208 %   1.5 3 add .75 add 1 2 div add 2 logicUnit mulv /z10 defpoint
209 %   z4 .3 logicUnit mul 0 addv .3 logicUnit mul cercle
210    [z4 dupp logicWireLength 0 addv] ligne
211    /i 0 def
212    XOR_dic /out {5.25 2 logicUnit mulv logicWireLength 0 addv} bind put
213    logicNInput {
214       XOR_dic (in) i chaine cvs append cvlit
215          [ logicWireLength neg inter i .5 add mul ] cvx put
216       /i i 1 add store
217    } repeat
218    /i 0 def
219    logicNInput {
220       [logicUnit inter i .5 add mul dupp logicWireLength neg logicUnit sub 0 addv] ligne
221       /i i 1 add store
222    } repeat
223    gsave
224    newpath
225       z1 smoveto
226       [z1 .. z6 .. z2] draw_
227       [z2 z8] ligne_
228       [z8 .. z9 .. z7] draw_
229       [z7 z1] ligne_
230       blanc fill
231    grestore
232    [z1 .. z6 .. z2] draw
233    [z2 z3] ligne
234    [z3 {right} .. {1 -2} z4] draw
235    [z4 {-1 -2} .. {left} z5] draw
236    [z5 z1] ligne
237    [z8 .. z9 .. z7] draw
238    /logicNInput 2 store
239 end
240 grestore
241 } def
242
243 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
244
245 /NXOR_dic 15 dict def
246 /NXOR_dim {
247    logicWireLength neg 0 jtoppoint
248    5.85 logicUnit mul logicWireLength add 4 logicUnit mul jtoppoint
249 } def
250 /NXOR {
251 gsave
252 8 dict begin
253    currentpoint translate
254    /h_nxor 4 logicUnit mul def
255    /inter h_nxor logicNInput div def
256    .75  0 logicUnit mulv /z1 defpoint
257    .75  4 logicUnit mulv /z2 defpoint
258    2.25 4 logicUnit mulv /z3 defpoint
259    5.25 2 logicUnit mulv /z4 defpoint
260    2.25 0 logicUnit mulv /z5 defpoint
261    1.5  2 logicUnit mulv /z6 defpoint
262    0    0 logicUnit mulv /z7 defpoint
263    0    4 logicUnit mulv /z8 defpoint
264    .75  2 logicUnit mulv /z9 defpoint
265    z4 .3 logicUnit mul 0 addv .3 logicUnit mul cercle
266    [z4 .6 logicUnit mul 0 addv dupp logicWireLength 0 addv] ligne
267    /i 0 def
268    NXOR_dic /out {5.85 2 logicUnit mulv logicWireLength 0 addv} bind put
269    logicNInput {
270       NXOR_dic (in) i chaine cvs append cvlit
271          [ logicWireLength neg inter i .5 add mul ] cvx put
272       /i i 1 add store
273    } repeat
274    /i 0 def
275    logicNInput {
276       [logicUnit inter i .5 add mul dupp logicWireLength neg logicUnit sub 0 addv] ligne
277       /i i 1 add store
278    } repeat
279    gsave
280    newpath
281       z1 smoveto
282       [z1 .. z6 .. z2] draw_
283       [z2 z8] ligne_
284       [z8 .. z9 .. z7] draw_
285       [z7 z1] ligne_
286       blanc fill
287    grestore
288    [z1 .. z6 .. z2] draw
289    [z2 z3] ligne
290    [z3 {right} .. {1 -2} z4] draw
291    [z4 {-1 -2} .. {left} z5] draw
292    [z5 z1] ligne
293    [z8 .. z9 .. z7] draw
294    /logicNInput 2 store
295 end
296 grestore
297 } def
298
299 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
300
301 /INV_dic 15 dict def
302 /INV_dim {
303    logicWireLength neg 0 jtoppoint
304    3.198 logicUnit mul logicWireLength add 3 logicUnit mul jtoppoint
305 } def
306 /INV {
307 gsave
308 8 dict begin
309    currentpoint translate
310    /h_inv 3 logicUnit mul def
311    /inter h_inv logicNInput div def
312    0      0  logicUnit mulv /z1 defpoint
313    0     3   logicUnit mulv /z2 defpoint
314    2.598 1.5 logicUnit mulv /z3 defpoint
315    3.198 1.5 logicUnit mulv /z4 defpoint
316    z3 .3 logicUnit mul 0 addv .3 logicUnit mul cercle   
317    [z1 z2 z3] polygone
318    [z3 .6 logicUnit mul 0 addv dupp logicWireLength 0 addv] ligne
319    INV_dic /out {3.198 1.5 logicUnit mulv logicWireLength 0 addv} bind put
320    INV_dic /in {logicWireLength neg 1.5 logicUnit mul} bind put
321    [logicWireLength neg 1.5 logicUnit mul 0 1.5 logicUnit mul] ligne
322 end
323 grestore
324 } def
325
326 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
327
328 /BUF_dic 15 dict def
329 /BUF_dim {
330    logicWireLength neg 0 jtoppoint
331    2.598 logicWireLength 2 mul add 3 logicUnit mulv jtoppoint
332 } def
333 /BUF {
334 gsave
335 8 dict begin
336    currentpoint translate
337    /h_buf 3 logicUnit mul def
338    /inter h_buf logicNInput div def
339    0   0     logicUnit mulv /z1 defpoint
340    0   3     logicUnit mulv /z2 defpoint
341    2.598 1.5 logicUnit mulv /z3 defpoint
342    3.198 1.5 logicUnit mulv /z4 defpoint
343    [z1 z2 z3] polygone
344    [z3 dupp logicWireLength 0 addv] ligne
345    /i 0 def
346    BUF_dic /out {2.598 1.5 logicUnit mulv logicWireLength 0 addv} bind put
347    BUF_dic /in {logicWireLength neg 1.5 logicUnit mul} bind put
348    [logicWireLength neg 1.5 logicUnit mul 0 1.5 logicUnit mul] ligne
349 end
350 grestore
351 } def
352
353 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%รน
354
355 /skipnode {
356    /loadnodedict    false def
357    /n@deencours     false def
358    /dian@deencours  false def
359    /ovaln@deencours false def
360    /cn@deencours    false def
361    /Cn@deencours    false def
362 } def
363
364 /ADD_dic 15 dict def
365 /ADD_dim {
366    logicWireLength neg 0 jtoppoint
367    5 logicUnit mul logicWireLength add 4 logicUnit mul jtoppoint
368 } def
369 /ADD {
370 gsave
371 8 dict begin
372    currentpoint translate
373    0 0 logicUnit mulv /z1 defpoint
374    5 0 logicUnit mulv /z2 defpoint
375    5 4 logicUnit mulv /z3 defpoint
376    0 4 logicUnit mulv /z4 defpoint
377    /in0 {0 1 logicUnit mulv logicWireLength neg 0 addv} def
378    /in1 {0 2 logicUnit mulv logicWireLength neg 0 addv} def
379    /in2 {0 3 logicUnit mulv logicWireLength neg 0 addv} def
380    /out0 {5 1 logicUnit mulv logicWireLength 0 addv} def
381    /out1 {5 3 logicUnit mulv logicWireLength 0 addv} def
382    [in0 in1 in2] {dupp exch pop 0 exch (-) line} papply
383    [out0 out1] {dupp exch pop 5 logicWireLength mul exch (-) line} papply
384    [z1 z2 z3 z4] polygone
385    10 dict begin
386       skipnode
387       12 setfontsize
388       setTimes
389    %  (\275 ADD) z1 z3 milieu cctext
390      (ADD) z1 z3 milieu cctext
391    end
392
393    ADD_dic /remin {0 1 logicUnit mulv logicWireLength neg 0 addv} bind put
394    ADD_dic /in0 {0 1 logicUnit mulv logicWireLength neg 0 addv} bind put
395    ADD_dic /in1 {0 2 logicUnit mulv logicWireLength neg 0 addv} bind put
396    ADD_dic /in2 {0 3 logicUnit mulv logicWireLength neg 0 addv} bind put
397    ADD_dic /out0 {5 1 logicUnit mulv logicWireLength 0 addv}  bind put
398    ADD_dic /out1 {5 3 logicUnit mulv logicWireLength 0 addv}  bind put
399    ADD_dic /sum {5 1 logicUnit mulv logicWireLength 0 addv}  bind put
400    ADD_dic /rem {5 3 logicUnit mulv logicWireLength 0 addv}  bind put
401 end
402 grestore
403 } def
404
405 /DemiADD_dic 21 dict def
406 /DemiADD_dim {
407    logicWireLength neg 0 jtoppoint
408    5 logicUnit mul logicWireLength add 4 logicUnit mul jtoppoint
409 } def
410 /DemiADD {
411 gsave
412 8 dict begin
413    currentpoint translate
414    0 0 logicUnit mulv /z1 defpoint
415    5 0 logicUnit mulv /z2 defpoint
416    5 4 logicUnit mulv /z3 defpoint
417    0 4 logicUnit mulv /z4 defpoint
418    /in0 {0 1 logicUnit mulv logicWireLength neg 0 addv} def
419    /in1 {0 3 logicUnit mulv logicWireLength neg 0 addv} def
420    /out0 {5 1 logicUnit mulv logicWireLength 0 addv} def
421    /out1 {5 3 logicUnit mulv logicWireLength 0 addv} def
422    [in0 in1] {dupp exch pop 0 exch (-) line} papply
423    [out0 out1] {dupp exch pop 5 logicWireLength mul exch (-) line} papply
424    [z1 z2 z3 z4] polygone
425    10 dict begin
426       skipnode
427       12 setfontsize
428       setTimes
429      (\275 ADD) z1 z3 milieu cctext
430    end
431
432    DemiADD_dic /in0 {0 1 logicUnit mulv logicWireLength neg 0 addv}  bind put
433    DemiADD_dic /in1 {0 3 logicUnit mulv logicWireLength neg 0 addv}  bind put
434    DemiADD_dic /out0 {5 1 logicUnit mulv logicWireLength 0 addv}  bind put
435    DemiADD_dic /out1 {5 3 logicUnit mulv logicWireLength 0 addv}  bind put
436    DemiADD_dic /sum {5 1 logicUnit mulv logicWireLength 0 addv}  bind put
437    DemiADD_dic /rem {5 3 logicUnit mulv logicWireLength 0 addv}  bind put
438 end
439 grestore
440 } def
441
442 %% /SQUARESYMBOL_dic 25 dict def
443 %% /SQUARESYMBOL_dim {
444 %%    0 0 jtoppoint
445 %%    4 logicUnit mul dup jtoppoint
446 %% } def
447 %% /SQUARESYMBOL {
448 %% gsave
449 %% 8 dict begin
450 %%    currentpoint translate
451 %%    /taille_fonte exch def
452 %%    /le_nom exch def
453 %%    0 0 logicUnit mulv /z1 defpoint
454 %%    4 0 logicUnit mulv /z2 defpoint
455 %%    4 4 logicUnit mulv /z3 defpoint
456 %%    0 4 logicUnit mulv /z4 defpoint
457 %%    [z1 z2 z3 z4] polygone
458 %%    /in0 {0 1 logicUnit mulv logicWireLength neg 0 addv} def
459 %%    /in1 {0 2 logicUnit mulv logicWireLength neg 0 addv} def
460 %%    /in2 {0 3 logicUnit mulv logicWireLength neg 0 addv} def
461 %%    /out0 {4 1 logicUnit mulv logicWireLength 0 addv} def
462 %%    /out1 {4 2 logicUnit mulv logicWireLength 0 addv} def
463 %%    /out1 {4 3 logicUnit mulv logicWireLength 0 addv} def
464 %%    10 dict begin
465 %%       skipnode
466 %%       taille_fonte setfontsize
467 %%       setTimes
468 %%       le_nom z1 z3 milieu cctext
469 %%    end
470 %%
471 %%    SQUARESYMBOL_dic /in0 {0 1 logicUnit mulv} bind put
472 %%    SQUARESYMBOL_dic /in1 {0 2 logicUnit mulv} bind put
473 %%    SQUARESYMBOL_dic /in2 {0 3 logicUnit mulv} bind put
474 %%    SQUARESYMBOL_dic /out0 {4 1 logicUnit mulv}  bind put
475 %%    SQUARESYMBOL_dic /out1 {4 2 logicUnit mulv}  bind put
476 %%    SQUARESYMBOL_dic /out2 {4 3 logicUnit mulv}  bind put
477 %%    SQUARESYMBOL_dic /up0 {1 4 logicUnit mulv}  bind put
478 %%    SQUARESYMBOL_dic /up1 {2 4 logicUnit mulv}  bind put
479 %%    SQUARESYMBOL_dic /up2 {3 4 logicUnit mulv}  bind put
480 %%    SQUARESYMBOL_dic /down0 {1 0      logicUnit mulv}  bind put
481 %%    SQUARESYMBOL_dic /down1 {2 0      logicUnit mulv}  bind put
482 %%    SQUARESYMBOL_dic /down2 {3 0      logicUnit mulv}  bind put
483 %% end
484 %% grestore
485 %% } def
486
487 /DemiADDmod_dic 21 dict def
488 /DemiADDmod_dim {
489    logicWireLength neg dup jtoppoint
490    4 logicUnit mul logicWireLength add 4 logicUnit mul jtoppoint
491 } def
492 /DemiADDmod {
493 gsave
494 8 dict begin
495    currentpoint translate
496    0 0 logicUnit mulv /z1 defpoint
497    4 0 logicUnit mulv /z2 defpoint
498    4 4 logicUnit mulv /z3 defpoint
499    0 4 logicUnit mulv /z4 defpoint
500    /in0 {0 1 logicUnit mulv logicWireLength neg 0 addv} def
501    /in1 {0 3 logicUnit mulv logicWireLength neg 0 addv} def
502    /out0 {4 2 logicUnit mulv logicWireLength 0 addv} def
503    /out1 {2 0 logicUnit mulv 0 logicWireLength neg addv} def
504    [in0 in1] {dupp exch pop 0 exch (-) line} papply
505    out0 dupp exch pop 4 logicWireLength mul exch (-) line
506    out1 dupp pop 0 (-) line
507    [z1 z2 z3 z4] polygone
508    10 dict begin
509       skipnode
510       12 setfontsize
511       setTimes
512      (\275 Add) z1 z3 milieu cctext
513    end
514
515    DemiADDmod_dic /in0 {0 1 logicUnit mulv logicWireLength neg 0 addv}  bind put
516    DemiADDmod_dic /in1 {0 3 logicUnit mulv logicWireLength neg 0 addv}  bind put
517    DemiADDmod_dic /out0 {4 2 logicUnit mulv logicWireLength 0 addv}  bind put
518    DemiADDmod_dic /out1 {2 0 logicUnit mulv 0 logicWireLength neg addv} bind put
519    DemiADDmod_dic /rem {2 0 logicUnit mulv 0 logicWireLength neg addv} bind put
520    DemiADDmod_dic /sum {4 2 logicUnit mulv logicWireLength 0 addv}  bind put
521 end
522 grestore
523 } def
524
525 /ADDmod_dic 15 dict def
526 /ADDmod_dim {
527    logicWireLength neg dup jtoppoint
528    5 logicUnit mul logicWireLength add 4 logicUnit mul logicWireLength add jtoppoint
529 } def
530 /ADDmod {
531 gsave
532 8 dict begin
533    currentpoint translate
534    0 0 logicUnit mulv /z1 defpoint
535    5 0 logicUnit mulv /z2 defpoint
536    5 4 logicUnit mulv /z3 defpoint
537    0 4 logicUnit mulv /z4 defpoint
538    /in0 {1 4 logicUnit mulv 0 logicWireLength addv} def
539    /in1 {0 1 logicUnit mulv logicWireLength neg 0 addv} def
540    /in2 {0 3 logicUnit mulv logicWireLength neg 0 addv} def
541    /out0 {5 2 logicUnit mulv logicWireLength 0 addv} def
542    /out1 {2.5 0 logicUnit mulv 0 logicWireLength neg addv} def
543    in0 dupp pop 4 logicUnit mul (-) line
544    out1 dupp pop 0 (-) line
545    [in1 in2] {dupp exch pop 0 exch (-) line} papply
546    out0 dupp exch logicWireLength sub exch (-) line
547    [z1 z2 z3 z4] polygone
548    10 dict begin
549       skipnode
550       20 setfontsize
551       setTimes
552      (+) z1 z3 milieu cctext
553    end
554
555    ADDmod_dic /in0 {1 4 logicUnit mulv 0 logicWireLength addv}  bind put
556    ADDmod_dic /remin {1 4 logicUnit mulv 0 logicWireLength addv}  bind put
557    ADDmod_dic /in2 {0 1 logicUnit mulv logicWireLength neg 0 addv} bind put
558    ADDmod_dic /in1 {0 3 logicUnit mulv logicWireLength neg 0 addv} bind put
559    ADDmod_dic /out0 {5 2 logicUnit mulv logicWireLength 0 addv}  bind put
560    ADDmod_dic /sum {5 2 logicUnit mulv logicWireLength 0 addv}  bind put
561    ADDmod_dic /out1 {2.5 0 logicUnit mulv 0 logicWireLength neg addv} bind put
562    ADDmod_dic /rem {2.5 0 logicUnit mulv 0 logicWireLength neg addv} bind put
563 end
564 grestore
565 } def
566
567 /GATE_dic 35 dict def
568 /GATE_dim {
569 5 dict begin
570    3 copy
571    pop pop
572    /n exch def
573    /nd n 1000 div floor cvi def
574    /n n nd 1000 mul sub store
575    /nl n 100 div floor cvi def
576    /n n nl 100 mul sub store
577    /nu n 10 div floor cvi def
578    /n n nu 10 mul sub store
579    /nr n cvi def
580    nl 0 ne {/nl 1 store} if
581    nu 0 ne {/nu 1 store} if
582    nr 0 ne {/nr 1 store} if
583    nd 0 ne {/nd 1 store} if
584    logicWireLength neg nl mul
585    logicWireLength neg nd mul
586    jtoppoint
587    4 logicUnit mul logicWireLength nr mul add
588    4 logicUnit mul logicWireLength nu mul add
589    jtoppoint
590 end
591 } def
592
593 /GATE {
594 gsave
595 8 dict begin
596    currentpoint translate
597    /n exch def
598    /taille_fonte exch def
599    /le_nom exch def
600    0 0 logicUnit mulv /z1 defpoint
601    4 0 logicUnit mulv /z2 defpoint
602    4 4 logicUnit mulv /z3 defpoint
603    0 4 logicUnit mulv /z4 defpoint
604    [z1 z2 z3 z4] polygone
605
606    /nd n 1000 div floor cvi def
607    /n n nd 1000 mul sub store
608    /nl n 100 div floor cvi def
609    /n n nl 100 mul sub store
610    /nu n 10 div floor cvi def
611    /n n nu 10 mul sub store
612    /nr n cvi def
613
614    /h_and 4 logicUnit mul def
615    nl 0 ne {
616       /inter h_and nl div def
617       /i 0 def
618       nl {
619          GATE_dic (l) i chaine cvs append cvlit
620             [ logicWireLength neg inter i .5 add mul ] cvx put
621          [ 0 inter i .5 add mul dupp logicWireLength neg 0 addv] ligne
622          /i i 1 add store
623       } repeat
624    } if
625
626    nr 0 ne {
627       /inter h_and nr div def
628       /i 0 def
629       nr {
630          GATE_dic (r) i chaine cvs append cvlit
631             [ logicWireLength 4 logicUnit mul add inter i .5 add mul ] cvx put
632          [ 4 logicUnit mul inter i .5 add mul dupp logicWireLength 0 addv] ligne
633          /i i 1 add store
634       } repeat
635    } if
636
637    nu 0 ne {
638       /inter h_and nu div def
639       /i 0 def
640       nu {
641          GATE_dic (u) i chaine cvs append cvlit
642             [ inter i .5 add mul 4 logicUnit mul logicWireLength add ] cvx put
643          [ inter i .5 add mul 4 logicUnit mul dupp 0 logicWireLength addv] ligne
644          /i i 1 add store
645       } repeat
646    } if
647
648    nd 0 ne {
649       /inter h_and nd div def
650       /i 0 def
651       nd {
652          GATE_dic (d) i chaine cvs append cvlit
653             [ inter i .5 add mul 0 logicWireLength sub ] cvx put
654          [ inter i .5 add mul 0 dupp 0 logicWireLength subv] ligne
655          /i i 1 add store
656       } repeat
657    } if
658
659    10 dict begin
660       skipnode
661       taille_fonte setfontsize
662       setTimes
663       le_nom z1 z3 milieu cctext
664    end
665
666 end
667 grestore
668 } def
Note: See TracBrowser for help on using the browser.