diff options
author | Ruben Undheim <ruben.undheim@gmail.com> | 2018-10-20 17:54:32 +0200 |
---|---|---|
committer | Ruben Undheim <ruben.undheim@gmail.com> | 2018-10-20 17:54:32 +0200 |
commit | ca2442640f4394296d9d6b0c42d41d399dbf9667 (patch) | |
tree | 879c0a6065d6982d5a82b35dc3ff67299e2ea7d9 /lib | |
parent | 04d5d0ea0f65a434e568fe031f6396caec9b3a8d (diff) |
New upstream version 3.9.73+dfsg.1
Diffstat (limited to 'lib')
-rw-r--r-- | lib/analoglib3.lps | 229 | ||||
-rw-r--r-- | lib/cyrillic.enc | 39 | ||||
-rw-r--r-- | lib/digitaltcl.lps | 14 | ||||
-rw-r--r-- | lib/fonts/courier_cyrillic.xfe | 50 | ||||
-rw-r--r-- | lib/fonts/helvetica_cyrillic.xfe | 50 | ||||
-rw-r--r-- | lib/fonts/testtest.ps | 206 | ||||
-rw-r--r-- | lib/fonts/times_roman_cyrillic.xfe | 51 | ||||
-rw-r--r-- | lib/isolatin2.enc | 39 | ||||
-rw-r--r-- | lib/isolatin5.enc | 40 | ||||
-rw-r--r-- | lib/tcl/bparams.tcl | 2 | ||||
-rw-r--r-- | lib/tcl/edif.tcl | 38 | ||||
-rw-r--r-- | lib/tcl/files.tcl | 1 | ||||
-rw-r--r-- | lib/tcl/mousehint.tcl | 23 | ||||
-rw-r--r-- | lib/tcl/resource.tcl | 166 | ||||
-rw-r--r-- | lib/tcl/symbol.tcl | 126 | ||||
-rw-r--r-- | lib/tcl/text.tcl | 1 | ||||
-rwxr-xr-x | lib/tcl/tkcon.tcl | 6 | ||||
-rw-r--r-- | lib/tcl/wrapper.tcl | 488 | ||||
-rwxr-xr-x | lib/tcl/xcircuit.tcl.in | 2 | ||||
-rw-r--r-- | lib/tcl/xcstartup.tcl | 20 | ||||
-rw-r--r-- | lib/xcircps2.pro | 43 | ||||
-rw-r--r-- | lib/xspice.lps | 591 |
22 files changed, 1733 insertions, 492 deletions
diff --git a/lib/analoglib3.lps b/lib/analoglib3.lps index ece3c9d..e600a83 100644 --- a/lib/analoglib3.lps +++ b/lib/analoglib3.lps @@ -1,7 +1,7 @@ %! PostScript set of library objects for XCircuit -% Version: 3.6 +% Version: 3.9 % Library name is: analoglib3 -% Author: R. Timothy Edwards <tim@khachaturian.tim.linglan.net> +% Author: <tim@stravinsky> % % Depend analoglib3::NPNModel generic::arrowhead @@ -9,6 +9,7 @@ % Depend analoglib3::ACsource analog::source analoglib2::sinusoid % Depend analoglib3::Vpwl analog::source % Depend analoglib3::Switch generic::circle generic::arrowhead +% Depend analoglib3::Vpulse analog::source % XCircuitLib library objects /analoglib3::pMOS { @@ -20,14 +21,14 @@ 1 1.000 0 -64 0 -28 -32 -28 -32 28 0 28 0 64 6 polygon 1 1.000 -52 0 8 0.000 360.000 xcarc 1.000 0.000 0.000 scb -(S) {/Times-Roman cf} 2 9 0 1.000 0 64 pinlabel -(D) {/Times-Roman cf} 2 13 0 1.000 0 -64 pinlabel -(G) {/Times-Roman cf} 2 7 0 1.000 -64 0 pinlabel +(S) {/Times-Roman cf} 2 9 0.000 1.000 0 64 pinlabel +(D) {/Times-Roman cf} 2 13 0.000 1.000 0 -64 pinlabel +(G) {/Times-Roman cf} 2 7 0.000 1.000 -64 0 pinlabel 0.180 0.545 0.341 scb mark @fingers ( M=) @length ( L=) @width ( W=) @model ( ) @subs ( %pD %pG %pS ) -@index @class (spice:) {/Times-Roman cf} ctmk 4 0 1.000 -196 -139 infolabel +@index @class (spice:) {/Times-Roman cf} ctmk 4 0.000 1.000 -196 -139 infolabel mark ( %x %y) @width ( ) @length (sim:p %pG %pD %pS ) {/Times-Roman cf} ctmk 4 -0 1.000 -196 -187 infolabel +0.000 1.000 -196 -187 infolabel 0.647 0.165 0.165 scb mark @fingers {hS} (=) {hS} (M) {CR} @length (=) {Tf} (L) {hS} {CR} @width (=) {Ts} (W) {/Times-Roman cf} ctmk p_jst p_rot 0.700 p_xps1 p_yps1 label @@ -38,9 +39,9 @@ mark @model {/Times-RomanISO cf} ctmk 16 p_rot 0.700 p_xps p_yps label endgate } def -1.000 90 <</p_yps -32 /p_xps1 32 /p_yps1 -40 /p_rot 270 /p_xps2 -32 >> /analoglib3::pMOS libinst +1.000 90.000 <</p_yps -32 /p_xps1 32 /p_yps1 -40 /p_rot 270 /p_xps2 -32 >> /analoglib3::pMOS libinst <</@model (hvpfet) /@length (0.36u) /@subs (dvdd3) >> /analoglib3::pMOS libinst -1.000 90 <</p_yps -32 /p_xps1 32 /p_yps1 -40 /p_rot 270 /p_xps2 -32 /@model (hvpfet) +1.000 90.000 <</p_yps -32 /p_xps1 32 /p_yps1 -40 /p_rot 270 /p_xps2 -32 /@model (hvpfet) /@length (0.36u) /@subs (dvdd3) >> /analoglib3::pMOS libinst /analoglib3::pMOS1finger { @@ -52,14 +53,14 @@ endgate 1 1.000 0 -64 0 -28 -32 -28 -32 28 0 28 0 64 6 polygon 1 1.000 -52 0 8 0.000 360.000 xcarc 1.000 0.000 0.000 scb -(S) {/Times-Roman cf} 2 9 0 1.000 0 64 pinlabel -(D) {/Times-Roman cf} 2 13 0 1.000 0 -64 pinlabel -(G) {/Times-Roman cf} 2 7 0 1.000 -64 0 pinlabel +(S) {/Times-Roman cf} 2 9 0.000 1.000 0 64 pinlabel +(D) {/Times-Roman cf} 2 13 0.000 1.000 0 -64 pinlabel +(G) {/Times-Roman cf} 2 7 0.000 1.000 -64 0 pinlabel 0.180 0.545 0.341 scb mark @length ( L=) @width ( W=) @model ( ) @subs ( %pD %pG %pS ) @index @class -(spice:) {/Times-Roman cf} ctmk 4 0 1.000 -196 -139 infolabel +(spice:) {/Times-Roman cf} ctmk 4 0.000 1.000 -196 -139 infolabel mark ( %x %y) @width ( ) @length (sim:p %pG %pD %pS ) {/Times-Roman cf} ctmk 4 -0 1.000 -196 -187 infolabel +0.000 1.000 -196 -187 infolabel 0.647 0.165 0.165 scb mark @length (=) {Tf} (L) {hS} {CR} @width (=) {Ts} (W) {/Times-Roman cf} ctmk p_jst p_rot 0.700 p_xps2 p_yps2 label @@ -70,9 +71,9 @@ mark @model {/Times-RomanISO cf} ctmk 16 p_rot 0.700 p_xps1 p_yps1 label endgate } def -1.000 90 <</p_yps2 -32 /p_yps1 -24 /p_xps2 32 /p_rot 270 /p_xps -16 >> /analoglib3::pMOS1finger libinst +1.000 90.000 <</p_yps2 -32 /p_yps1 -24 /p_xps2 32 /p_rot 270 /p_xps -16 >> /analoglib3::pMOS1finger libinst <</@model (hvpfet) /@length (0.36u) /@subs (dvdd3) >> /analoglib3::pMOS1finger libinst -1.000 90 <</p_yps2 -32 /p_yps1 -24 /p_xps2 32 /p_rot 270 /p_xps -16 /@model (hvpfet) +1.000 90.000 <</p_yps2 -32 /p_yps1 -24 /p_xps2 32 /p_rot 270 /p_xps -16 /@model (hvpfet) /@length (0.36u) /@subs (dvdd3) >> /analoglib3::pMOS1finger libinst /analoglib3::nMOS { @@ -83,14 +84,14 @@ endgate 1 1.000 -44 -28 -44 28 2 polygon 1 1.000 -44 0 -64 0 2 polygon 1.000 0.000 0.000 scb -(G) {/Times-Roman cf} 2 7 0 1.000 -64 0 pinlabel -(S) {/Times-Roman cf} 2 13 0 1.000 0 -64 pinlabel -(D) {/Times-Roman cf} 2 9 0 1.000 0 64 pinlabel +(G) {/Times-Roman cf} 2 7 0.000 1.000 -64 0 pinlabel +(S) {/Times-Roman cf} 2 13 0.000 1.000 0 -64 pinlabel +(D) {/Times-Roman cf} 2 9 0.000 1.000 0 64 pinlabel 0.180 0.545 0.341 scb mark @fingers ( m=) @length ( l=) @width ( w=) @model ( ) @subs ( %pD %pG %pS ) -@index @class (spice:) {/Times-Roman cf} ctmk 4 0 1.000 -244 -139 infolabel +@index @class (spice:) {/Times-Roman cf} ctmk 4 0.000 1.000 -244 -139 infolabel mark ( %x %y) @width ( ) @length (sim:n %pG %pD %pS ) {/Times-Roman cf} ctmk 4 -0 1.000 -244 -187 infolabel +0.000 1.000 -244 -187 infolabel 0.647 0.165 0.165 scb mark @fingers (=) {Tf} {Tf} (M) {CR} @length (=) {Tf} (L) {hS} {CR} @width (=) {Ts} (W) {/Times-Roman cf} ctmk p_jst p_rot 0.700 p_xps2 p_yps2 label @@ -101,10 +102,10 @@ mark @model {/Times-RomanISO cf} ctmk 20 p_rot 0.700 p_xps1 p_yps1 label endgate } def -1.000 90 <</p_yps1 -24 /p_xps2 32 /p_yps2 -32 /p_rot 270 /p_xps -32 >> /analoglib3::nMOS libinst +1.000 90.000 <</p_yps1 -24 /p_xps2 32 /p_yps2 -32 /p_rot 270 /p_xps -32 >> /analoglib3::nMOS libinst <</p_jst 28 /p_xps2 16 /p_yps2 -16 /@model (hvnfet) /@length (0.36u) /@subs (dgnd) >> /analoglib3::nMOS libinst -1.000 90 <</p_yps2 -32 /p_yps1 -24 /p_xps2 32 /p_rot 270 /p_xps -32 /@model (hvnfet) +1.000 90.000 <</p_yps2 -32 /p_yps1 -24 /p_xps2 32 /p_rot 270 /p_xps -32 /@model (hvnfet) /@length (0.36u) /@subs (dgnd) >> /analoglib3::nMOS libinst /analoglib3::nMOS1finger { @@ -115,14 +116,14 @@ endgate 1 1.000 -44 -28 -44 28 2 polygon 1 1.000 -44 0 -64 0 2 polygon 1.000 0.000 0.000 scb -(G) {/Times-Roman cf} 2 7 0 1.000 -64 0 pinlabel -(S) {/Times-Roman cf} 2 13 0 1.000 0 -64 pinlabel -(D) {/Times-Roman cf} 2 9 0 1.000 0 64 pinlabel +(G) {/Times-Roman cf} 2 7 0.000 1.000 -64 0 pinlabel +(S) {/Times-Roman cf} 2 13 0.000 1.000 0 -64 pinlabel +(D) {/Times-Roman cf} 2 9 0.000 1.000 0 64 pinlabel 0.180 0.545 0.341 scb mark @length ( l=) @width ( w=) @model ( ) @subs ( %pD %pG %pS ) @index @class -(spice:) {/Times-Roman cf} ctmk 4 360 1.000 -244 -139 infolabel +(spice:) {/Times-Roman cf} ctmk 4 360.000 1.000 -244 -139 infolabel mark ( %x %y) @width ( ) @length (sim:n %pG %pD %pS ) {/Times-Roman cf} ctmk 4 -0 1.000 -244 -187 infolabel +0.000 1.000 -244 -187 infolabel 0.647 0.165 0.165 scb mark @length (=) {Tf} (L) {hS} {CR} @width (=) {Ts} (W) {/Times-Roman cf} ctmk p_jst p_rot 0.700 p_xps2 p_yps2 label @@ -133,9 +134,9 @@ mark @model {/Times-RomanISO cf} ctmk 20 p_rot 0.700 p_xps1 p_yps1 label endgate } def -1.000 90 <</p_yps2 -32 /p_yps1 -24 /p_xps2 32 /p_rot 270 /p_xps -32 >> /analoglib3::nMOS1finger libinst +1.000 90.000 <</p_yps2 -32 /p_yps1 -24 /p_xps2 32 /p_rot 270 /p_xps -32 >> /analoglib3::nMOS1finger libinst <</@model (hvnfet) /@length (0.36u) /@subs (dgnd) >> /analoglib3::nMOS1finger libinst -1.000 90 <</p_yps2 -32 /p_yps1 -24 /p_xps2 32 /p_rot 270 /p_xps -32 /@model (hvnfet) +1.000 90.000 <</p_yps2 -32 /p_yps1 -24 /p_xps2 32 /p_rot 270 /p_xps -32 /@model (hvnfet) /@length (0.36u) /@subs (dgnd) >> /analoglib3::nMOS1finger libinst /generic::arrowhead { @@ -160,15 +161,15 @@ endgate 1 1.000 0 48 0 64 2 polygon 1 1.000 0 -48 -48 -22 2 polygon 1 1.000 0 -48 0 -64 2 polygon -1.000 120 0 -48 generic::arrowhead +1.000 120.000 0 -48 generic::arrowhead 1.000 0.000 0.000 scb -(C) {/Times-Roman cf} 2 9 0 1.000 0 64 pinlabel -(B) {/Times-Roman cf} 2 7 0 1.000 -64 0 pinlabel -(E) {/Times-Roman cf} 2 13 0 1.000 0 -64 pinlabel +(C) {/Times-Roman cf} 2 9 0.000 1.000 0 64 pinlabel +(B) {/Times-Roman cf} 2 7 0.000 1.000 -64 0 pinlabel +(E) {/Times-Roman cf} 2 13 0.000 1.000 0 -64 pinlabel 0.180 0.545 0.341 scb mark @m ( M=) @length ( L=) @width ( W=) @model ( ) @subs ( %pC %pB %pE ) -@index @class (spice:) {/Times-Roman cf} ctmk 4 0 1.000 -244 -139 infolabel -(sim:b %pB %pE %pC) {/Times-Roman cf} 2 4 0 1.000 -244 -187 infolabel +@index @class (spice:) {/Times-Roman cf} ctmk 4 0.000 1.000 -244 -139 infolabel +(sim:b %pB %pE %pC) {/Times-Roman cf} 2 4 0.000 1.000 -244 -187 infolabel 0.000 0.000 1.000 scb mark @index @class {/Times-Roman cf} ctmk 16 p_rot 0.700 p_xps2 p_yps2 label sce @@ -179,7 +180,7 @@ mark @m {Tf} (=) {Tf} (M) {CR} @length {Tf} (=) {Tf} (L) {CR} @width {Ts} {hS} endgate } def -1.000 90 <</p_yps -40 /p_xps2 -32 /p_xps 32 /p_xps1 48 /p_yps1 -32 /p_rot 270 >> /analoglib3::NPNModel libinst +1.000 90.000 <</p_yps -40 /p_xps2 -32 /p_xps 32 /p_xps1 48 /p_yps1 -32 /p_rot 270 >> /analoglib3::NPNModel libinst /analoglib3::ResModel { <</@substype (sub) (lindex {sub well} 0) pop /@subs (avdd) /@width (1u) /@length @@ -190,18 +191,19 @@ endgate 1 1.000 0 -64 0 -36 2 polygon 1 1.000 0 -36 14 -30 -14 -18 14 -6 -14 6 14 18 -14 30 0 36 8 polygon 1.000 0.000 0.000 scb -(1) {/Times-Roman cf} 2 9 0 1.000 0 64 pinlabel -(2) {/Times-Roman cf} 2 13 0 1.000 0 -64 pinlabel +(1) {/Times-Roman cf} 2 9 0.000 1.000 0 64 pinlabel +(2) {/Times-Roman cf} 2 13 0.000 1.000 0 -64 pinlabel 0.180 0.545 0.341 scb mark @subs (=) @substype ( ) @width ( W=) @length ( L=) @units @value ( R=) -@model ( %p1 %p2 ) @index @class (spice:) {/Times-Roman cf} ctmk 4 0 1.000 -208 --160 infolabel -(sim:r %p1 %p2) {/Times-Roman cf} 2 4 0 1.000 -208 -208 infolabel +@model ( %p1 %p2 ) @index @class (spice:) {/Times-Roman cf} ctmk 4 0.000 1.000 +-208 -160 infolabel +(sim:r %p1 %p2) {/Times-Roman cf} 2 4 0.000 1.000 -208 -208 infolabel 0.647 0.165 0.165 scb mark (W) {/Symbol cf} @units {hS} @value {/Times-Roman cf} ctmk p_jst p_rot 0.700 p_xps1 p_yps1 label 0.180 0.545 0.341 scb -mark @index @class (pcb:) {/Times-Roman cf} ctmk 20 0 1.000 -208 -256 infolabel +mark @index @class (pcb:) {/Times-Roman cf} ctmk 20 0.000 1.000 -208 -256 +infolabel 0.000 0.000 1.000 scb mark @index @class {/Times-Roman cf} ctmk 20 p_rot 0.700 p_xps p_yps label 0.647 0.165 0.165 scb @@ -209,7 +211,8 @@ mark @model {/Times-RomanISO cf} ctmk 16 p_rot 0.700 p_xps2 p_yps2 label endgate } def -1.000 90 <</p_xps -32 /p_yps1 -32 /p_yps -16 /p_xps2 80 /p_yps2 -32 /p_rot 270 >> /analoglib3::ResModel libinst +1.000 90.000 <</@substype (sub) /p_xps -32 /p_yps1 -32 /p_yps -16 /p_xps2 80 /p_yps2 -32 +/p_rot 270 >> /analoglib3::ResModel libinst /analoglib3::MiMCap { <</@substype (sub) (lindex {sub well} 0) pop /@subs (agnd) /@fingers (1) /@length @@ -220,18 +223,18 @@ endgate 1 1.000 0 64 0 6 2 polygon 1 1.000 -32 6 32 6 2 polygon 1.000 0.000 0.000 scb -(1) {/Times-Roman cf} 2 9 0 1.000 0 64 pinlabel -(2) {/Times-Roman cf} 2 13 0 1.000 0 -64 pinlabel +(1) {/Times-Roman cf} 2 9 0.000 1.000 0 64 pinlabel +(2) {/Times-Roman cf} 2 13 0.000 1.000 0 -64 pinlabel 0.180 0.545 0.341 scb mark @subs (=) @substype ( ) @fingers ( M=) @width ( W=) @length ( L=) @units -@value ( %p1 %p2 MIM C=) @index (spice:C) {/Times-Roman cf} ctmk 4 0 1.000 -208 --160 infolabel -(sim:c %p1 %p2) {/Times-Roman cf} 2 4 0 1.000 -208 -208 infolabel +@value ( %p1 %p2 MIM C=) @index (spice:C) {/Times-Roman cf} ctmk 4 0.000 1.000 +-208 -160 infolabel +(sim:c %p1 %p2) {/Times-Roman cf} 2 4 0.000 1.000 -208 -208 infolabel 0.647 0.165 0.165 scb mark (F) @units {hS} @value {/Times-Roman cf} ctmk p_jst p_rot 0.700 p_xps1 p_yps1 label 0.180 0.545 0.341 scb -mark @index (pcb:C) {/Times-Roman cf} ctmk 20 0 1.000 -208 -256 infolabel +mark @index (pcb:C) {/Times-Roman cf} ctmk 20 0.000 1.000 -208 -256 infolabel 0.000 0.000 1.000 scb mark @index @class {/Times-Roman cf} ctmk 20 p_rot 0.700 p_xps p_yps label 0.647 0.165 0.165 scb @@ -243,7 +246,8 @@ sce endgate } def -1.000 90 <</p_xps -48 /p_yps 24 /p_yps1 -24 /p_xps2 80 /p_yps2 -24 /p_rot 270 >> /analoglib3::MiMCap libinst +1.000 90.000 <</@substype (sub) /p_xps -48 /p_yps 24 /p_yps1 -24 /p_xps2 80 /p_yps2 -24 +/p_rot 270 >> /analoglib3::MiMCap libinst /analoglib3::IndModel { <</@size (175u) /@width (2.5u) /@sep (2.5u) /@turns (6.5) /@substype (sub) @@ -260,18 +264,18 @@ endgate 1 1.000 0 -42 0 -64 2 polygon 1 1.000 0 42 0 64 2 polygon 1.000 0.000 0.000 scb -(1) {/Times-Roman cf} 2 9 0 1.000 0 64 pinlabel -(2) {/Times-Roman cf} 2 13 0 1.000 0 -64 pinlabel +(1) {/Times-Roman cf} 2 9 0.000 1.000 0 64 pinlabel +(2) {/Times-Roman cf} 2 13 0.000 1.000 0 -64 pinlabel 0.180 0.545 0.341 scb mark @turns ( turns=) @sep ( sep=) @width ( width=) @size ( size=) @subs (=) @substype ( ) @units @value ( ind=) @model ( %p1 %p2 ) @index (spice:L) -{/Times-Roman cf} ctmk 132 360 1.000 -208 -160 infolabel -(sim:l %p1 %p2) {/Times-Roman cf} 2 4 0 1.000 -208 -208 infolabel +{/Times-Roman cf} ctmk 132 360.000 1.000 -208 -160 infolabel +(sim:l %p1 %p2) {/Times-Roman cf} 2 4 0.000 1.000 -208 -208 infolabel 0.647 0.165 0.165 scb mark (H) @units {hS} @value {/Times-Roman cf} ctmk p_jst p_rot 0.700 p_xps1 p_yps1 label 0.180 0.545 0.341 scb -mark @index (pcb:L) {/Times-Roman cf} ctmk 20 0 1.000 -208 -256 infolabel +mark @index (pcb:L) {/Times-Roman cf} ctmk 20 0.000 1.000 -208 -256 infolabel 0.000 0.000 1.000 scb mark @index (L) {/Times-Roman cf} ctmk 20 p_rot 0.700 p_xps p_yps label 0.647 0.165 0.165 scb @@ -279,7 +283,8 @@ mark @model {/Times-Roman cf} ctmk 20 p_rot 0.700 p_xps2 p_yps2 label endgate } def -1.000 90 <</p_rot 270 /p_yps1 -48 /p_xps1 48 /p_yps -16 /p_xps -48 /p_xps2 80 >> /analoglib3::IndModel libinst +1.000 90.000 <</@substype (sub) /p_rot 270 /p_yps1 -48 /p_xps1 48 /p_yps -16 /p_xps -48 +/p_xps2 80 >> /analoglib3::IndModel libinst /analog::source { % hidden @@ -292,15 +297,15 @@ endgate /analoglib3::Vsource { <</p_yps 16 /p_xps 48 /p_rot 0 /@class (V) /@index (?) /@value (5) /p_jst 20 >> begingate -1.000 360 0 0 analog::source +1.000 360.000 0 0 analog::source (+) {/Symbol cf} 2 5 p_rot 1.000 0 14 label (-) {/Symbol cf} 2 5 p_rot 1.000 0 -22 label 1.000 0.000 0.000 scb -(v.p) {/Times-Roman cf} 2 9 0 1.000 0 64 pinlabel -(v.m) {/Times-Roman cf} 2 13 0 1.000 0 -64 pinlabel +(v.p) {/Times-Roman cf} 2 9 0.000 1.000 0 64 pinlabel +(v.m) {/Times-Roman cf} 2 13 0.000 1.000 0 -64 pinlabel 0.180 0.545 0.341 scb mark @value ( %pv.p %pv.m ) @index @class (spice:) {/Times-Roman cf} ctmk 20 -360 1.000 -96 -160 infolabel +360.000 1.000 -96 -160 infolabel 0.647 0.165 0.165 scb mark (V) {hS} @value {/Times-Roman cf} ctmk p_jst p_rot 0.700 48 -16 label 0.000 0.000 1.000 scb @@ -308,7 +313,7 @@ mark @index @class {/Times-Roman cf} ctmk 20 p_rot 0.700 p_xps p_yps label endgate } def -1.000 270 <</p_xps -48 /p_yps -16 /p_rot 270 >> /analoglib3::Vsource libinst +1.000 270.000 <</p_xps -48 /p_yps -16 /p_rot 270 >> /analoglib3::Vsource libinst /analoglib2::sinusoid { % hidden @@ -320,13 +325,13 @@ endgate /analoglib3::ACsource { <</p_yps1 -24 /p_xps1 48 /p_yps 32 /p_xps 48 /p_rot 0 /@index (?) /@value (5) /@offset (0) /@freq (1) /@units (k) /p_jst 20 >> begingate -1.000 0 0 0 analog::source +1.000 0.000 0 0 analog::source 1.000 0.000 0.000 scb -(s.p) {/Times-Roman cf} 2 9 0 1.000 0 64 pinlabel -(s.m) {/Times-Roman cf} 2 13 0 1.000 0 -64 pinlabel +(s.p) {/Times-Roman cf} 2 9 0.000 1.000 0 64 pinlabel +(s.m) {/Times-Roman cf} 2 13 0.000 1.000 0 -64 pinlabel 0.180 0.545 0.341 scb mark (\)) @units @freq ( ) @value ( ) @offset ( %ps.p %ps.m SIN\() @index -(spice:V) {/Times-Roman cf} ctmk 20 0 1.000 -336 -160 infolabel +(spice:V) {/Times-Roman cf} ctmk 20 0.000 1.000 -336 -160 infolabel 0.647 0.165 0.165 scb mark (Hz) @units {hS} @freq {CR} (offset) {ss} (V) {hS} @offset {CR} (p-p) {ss} (V) {hS} @value {/Times-Roman cf} ctmk p_jst p_rot 0.750 p_xps1 p_yps1 label @@ -337,28 +342,28 @@ mark @index (V) {/Times-RomanISO cf} ctmk 16 p_rot 0.700 p_xps p_yps label endgate } def -1.000 90 <</p_xps -48 /p_yps -16 /p_xps1 80 /p_yps1 -40 /p_rot 270 >> /analoglib3::ACsource libinst +1.000 90.000 <</p_xps -48 /p_yps -16 /p_xps1 80 /p_yps1 -40 /p_rot 270 >> /analoglib3::ACsource libinst /analoglib3::Vpwl { <</p_yps1 -16 /p_xps1 48 /@pwl (0 0 1u 5 2u 5 3u 0) /p_jst 20 /@index (?) /@class (V) /p_rot 0 /p_xps 48 /p_yps 16 >> begingate -1.000 360 0 0 analog::source +1.000 360.000 0 0 analog::source (+) {/Symbol cf} 2 5 p_rot 1.000 0 14 label (-) {/Symbol cf} 2 5 p_rot 1.000 0 -22 label 1.000 0.000 0.000 scb -(1) {/Times-Roman cf} 2 9 0 1.000 0 64 pinlabel -(2) {/Times-Roman cf} 2 13 0 1.000 0 -64 pinlabel +(1) {/Times-Roman cf} 2 9 0.000 1.000 0 64 pinlabel +(2) {/Times-Roman cf} 2 13 0.000 1.000 0 -64 pinlabel 0.000 0.000 1.000 scb mark @index @class {/Times-Roman cf} ctmk p_jst p_rot 0.700 p_xps p_yps label 0.180 0.545 0.341 scb mark (\)) @pwl ( %p1 %p2 PWL\() @index @class (spice:) {/Times-Roman cf} ctmk -16 0 1.000 -304 -176 infolabel +16 0.000 1.000 -304 -176 infolabel 0.647 0.165 0.165 scb mark @pwl {/Times-Roman cf} ctmk p_jst p_rot 0.700 p_xps1 p_yps1 label endgate } def -1.000 270 <</p_yps1 -112 /p_rot 270 /p_xps -56 /p_yps -16 /p_xps1 56 >> /analoglib3::Vpwl libinst +1.000 270.000 <</p_yps1 -112 /p_rot 270 /p_xps -56 /p_yps -16 /p_xps1 56 >> /analoglib3::Vpwl libinst /analoglib3::Capacitor { <</p_yps1 16 /p_xps1 48 /p_yps -16 /p_xps 48 /@class (C) /@value (1.0) /@units @@ -367,17 +372,18 @@ endgate 1 1.000 0 64 0 6 2 polygon 1 1.000 -32 6 32 6 2 polygon 1.000 0.000 0.000 scb -(1) {/Times-Roman cf} 2 9 0 1.000 0 64 pinlabel -(2) {/Times-Roman cf} 2 13 0 1.000 0 -64 pinlabel +(1) {/Times-Roman cf} 2 9 0.000 1.000 0 64 pinlabel +(2) {/Times-Roman cf} 2 13 0.000 1.000 0 -64 pinlabel 0.180 0.545 0.341 scb mark @units @value ( %p1 %p2 ) @index @class (spice:) {/Times-Roman cf} ctmk 4 -0 1.000 -208 -160 infolabel -(sim:e %p1 %p2) {/Times-Roman cf} 2 4 0 1.000 -208 -208 infolabel +0.000 1.000 -208 -160 infolabel +(sim:e %p1 %p2) {/Times-Roman cf} 2 4 0.000 1.000 -208 -208 infolabel 0.647 0.165 0.165 scb mark (F) @units {hS} @value {/Times-Roman cf} ctmk p_jst p_rot 0.700 p_xps p_yps label 0.180 0.545 0.341 scb -mark @index @class (pcb:) {/Times-Roman cf} ctmk 20 0 1.000 -208 -256 infolabel +mark @index @class (pcb:) {/Times-Roman cf} ctmk 20 0.000 1.000 -208 -256 +infolabel 0.000 0.000 1.000 scb mark @index @class {/Times-Roman cf} ctmk 20 p_rot 0.700 p_xps1 p_yps1 label sce @@ -385,7 +391,7 @@ sce endgate } def -1.000 90 <</p_xps 56 /p_yps1 -16 /p_xps1 -56 /p_yps -32 /p_rot 270 >> /analoglib3::Capacitor libinst +1.000 90.000 <</p_xps 56 /p_yps1 -16 /p_xps1 -56 /p_yps -32 /p_rot 270 >> /analoglib3::Capacitor libinst /analoglib3::Resistor { <</@class (R) /@value (1.0) /@units (k) /@index (?) /p_jst 20 /p_rot 0 /p_xps @@ -394,13 +400,14 @@ endgate 1 1.000 0 -64 0 -36 2 polygon 1 1.000 0 -36 14 -30 -14 -18 14 -6 -14 6 14 18 -14 30 0 36 8 polygon 1.000 0.000 0.000 scb -(1) {/Times-Roman cf} 2 9 0 1.000 0 64 pinlabel -(2) {/Times-Roman cf} 2 13 0 1.000 0 -64 pinlabel +(1) {/Times-Roman cf} 2 9 0.000 1.000 0 64 pinlabel +(2) {/Times-Roman cf} 2 13 0.000 1.000 0 -64 pinlabel 0.180 0.545 0.341 scb mark @units @value ( %p1 %p2 ) @index @class (spice:) {/Times-Roman cf} ctmk 4 -0 1.000 -208 -160 infolabel -mark @index @class (pcb:) {/Times-Roman cf} ctmk 20 0 1.000 -208 -256 infolabel -(sim:r %p1 %p2) {/Times-Roman cf} 2 4 0 1.000 -208 -208 infolabel +0.000 1.000 -208 -160 infolabel +mark @index @class (pcb:) {/Times-Roman cf} ctmk 20 0.000 1.000 -208 -256 +infolabel +(sim:r %p1 %p2) {/Times-Roman cf} 2 4 0.000 1.000 -208 -208 infolabel 0.647 0.165 0.165 scb mark (W) {/Symbol cf} @units {hS} @value {/Times-Roman cf} ctmk p_jst p_rot 0.700 p_xps p_yps label @@ -409,7 +416,7 @@ mark @index @class {/Times-Roman cf} ctmk p_jst p_rot 0.700 p_xps1 p_yps1 label endgate } def -1.000 90 <</p_yps1 -16 /p_xps1 -32 /p_yps -32 /p_rot 270 >> /analoglib3::Resistor libinst +1.000 90.000 <</p_yps1 -16 /p_xps1 -32 /p_yps -32 /p_rot 270 >> /analoglib3::Resistor libinst /generic::circle { % trivial @@ -417,8 +424,8 @@ begingate 1 1.000 16 0 6 0.000 360.000 xcarc 1 1.000 0 0 10 0 2 polygon 1.000 0.000 0.000 scb -(out) {/Times-Roman cf} 2 4 0 1.000 16 0 pinlabel -(out) {/Times-Roman cf} 2 7 0 1.000 0 0 pinlabel +(out) {/Times-Roman cf} 2 4 -0.000 1.000 16 0 pinlabel +(out) {/Times-Roman cf} 2 7 -0.000 1.000 0 0 pinlabel endgate } def @@ -426,30 +433,56 @@ endgate <</@model (switch) /@class (S) /@index (?) >> begingate 1 1.300 32 32 2 -43 2 polygon 1 0.600 8 -24 57 49.000 90.000 xcarc --1.000 90 0 -64 generic::circle -1.000 90 0 48 generic::circle +-1.000 /sv 90.000 0 -64 generic::circle +1.000 90.000 0 48 generic::circle 1.000 0.000 0.000 scb -(1) {/Times-Roman cf} 2 9 0 1.000 0 48 pinlabel -(2) {/Times-Roman cf} 2 13 0 1.000 0 -64 pinlabel +(1) {/Times-Roman cf} 2 9 0.000 1.000 0 48 pinlabel +(2) {/Times-Roman cf} 2 13 0.000 1.000 0 -64 pinlabel sce 1 1.000 32 -16 96 -16 2 polygon --1.000 270 16 -16 generic::arrowhead +-1.000 /sv 270.000 16 -16 generic::arrowhead 1.000 0.000 0.000 scb -(3) {/Times-Roman cf} 2 20 0 1.000 96 -16 pinlabel -(4) {/Times-Roman cf} 2 20 0 1.000 96 -48 pinlabel +(3) {/Times-Roman cf} 2 20 0.000 1.000 96 -16 pinlabel +(4) {/Times-Roman cf} 2 20 0.000 1.000 96 -48 pinlabel 0.180 0.545 0.341 scb mark @model ( %p1 %p2 %p3 %p4 ) @index @class (spice1:) {/Times-Roman cf} ctmk -16 0 0.700 -128 -192 infolabel +16 0.000 0.700 -128 -192 infolabel sce -(+) {/Symbol cf} 2 17 0 0.700 96 -8 label -(-) {/Symbol cf} 2 17 0 0.700 96 -40 label +(+) {/Symbol cf} 2 17 0.000 0.700 96 -8 label +(-) {/Symbol cf} 2 17 0.000 0.700 96 -40 label 1 1.000 96 -48 72 -48 72 -64 3 polygon 1 1.000 54 -64 90 -64 2 polygon 1 1.000 62 -72 82 -72 2 polygon 1 1.000 70 -80 74 -80 2 polygon 0.180 0.545 0.341 scb -mark ( sw) @model (spice@1:.model ) {/Times-Roman cf} ctmk 16 0 0.700 -128 -160 -infolabel +mark ( sw) @model (spice@1:.model ) {/Times-Roman cf} ctmk 16 0.000 0.700 -128 +-160 infolabel +endgate +} def + +/analoglib3::Vpulse { +<</@period (10.0u) /@pwidth (1.0u) /@t_fall (1.0u) /@t_rise (1.0u) /@t_delay +(0.0) /@vpulse (3.3) /@vinit (0.0) /p_jst 20 /@index (?) /@class (V) /p_rot 0 /p_xps +48 /p_yps 16 >> begingate +1.000 360.000 0 0 analog::source +1.000 0.000 0.000 scb +(v.p) {/Times-Roman cf} 2 9 0.000 1.000 0 64 pinlabel +(v.m) {/Times-Roman cf} 2 13 0.000 1.000 0 -64 pinlabel +0.180 0.545 0.341 scb +mark (\)) @period ( ) @pwidth ( ) @t_fall ( ) @t_rise ( ) @t_delay ( ) @vpulse +( ) @vinit ( PULSE\() @vpulse ( %pv.p %pv.m DC=) @index @class (spice:) +{/Times-Roman cf} ctmk 20 360.000 1.000 -96 -160 infolabel +0.647 0.165 0.165 scb +mark (V) {hS} @vpulse (\261) @vinit {/Times-Roman cf} ctmk p_jst p_rot 0.700 48 +-16 label +0.000 0.000 1.000 scb +mark @index @class {/Times-Roman cf} ctmk 20 p_rot 0.700 p_xps p_yps label +sce +1 1.000 -24 -12 -16 -12 -16 12 -8 12 -8 -12 0 -12 0 12 8 12 8 -12 16 -12 16 12 +24 12 12 polygon +mark (s) @period (T=) {0.647 0.165 0.165 scb} {/Times-Roman cf} ctmk 16 0.000 +0.700 48 -52 label +(+) {/Times-Roman cf} 2 21 0.000 0.600 0 22 label endgate } def diff --git a/lib/cyrillic.enc b/lib/cyrillic.enc new file mode 100644 index 0000000..57887f4 --- /dev/null +++ b/lib/cyrillic.enc @@ -0,0 +1,39 @@ +%%BeginResource: encoding ISO8859_5Encoding +/ISO8859_5Encoding [ +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright +/parenleft /parenright /asterisk /plus /comma /minus /period /slash +/zero /one /two /three /four /five /six /seven +/eight /nine /colon /semicolon /less /equal /greater /question +% 100 +/at /A /B /C /D /E /F /G +/H /I /J /K /L /M /N /O +/P /Q /R /S /T /U /V /W +/X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore +/quoteleft /a /b /c /d /e /f /g +/h /i /j /k /l /m /n /o +/p /q /r /s /t /u /v /w +/x /y /z /braceleft /bar /braceright /asciitilde /.notdef +% 200 +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/space /afii10023 /afii10051 /afii10052 /afii10053 /afii10054 /afii10055 /afii10056 +/afii10057 /afii10058 /afii10059 /afii10060 /afii10061 /.notdef /afii10062 /afii10145 +/afii10017 /afii10018 /afii10019 /afii10020 /afii10021 /afii10022 /afii10024 /afii10025 +/afii10026 /afii10027 /afii10028 /afii10029 /afii10030 /afii10031 /afii10032 /afii10033 +% 300 +/afii10034 /afii10035 /afii10036 /afii10037 /afii10038 /afii10039 /afii10040 /afii10041 +/afii10042 /afii10043 /afii10044 /afii10045 /afii10046 /afii10047 /afii10048 /afii10049 +/afii10065 /afii10066 /afii10067 /afii10068 /afii10069 /afii10070 /afii10072 /afii10073 +/afii10074 /afii10075 /afii10076 /afii10077 /afii10078 /afii10079 /afii10080 /afii10081 +/afii10082 /afii10083 /afii10084 /afii10085 /afii10086 /afii10087 /afii10088 /afii10089 +/afii10090 /afii10091 /afii10092 /afii10093 /afii10094 /afii10095 /afii10096 /afii10097 +/.notdef /afii10071 /afii10099 /afii10100 /afii10101 /afii10102 /afii10103 /afii10104 +/afii10105 /afii10106 /afii10107 /afii10108 /afii10109 /.notdef /afii10110 /afii10193 +] def +%%EndResource diff --git a/lib/digitaltcl.lps b/lib/digitaltcl.lps index 4cb9c49..4ab3fe2 100644 --- a/lib/digitaltcl.lps +++ b/lib/digitaltcl.lps @@ -8,19 +8,19 @@ /digital::LED { % nonetwork <</p_col6 {0 0 0 } -(switch -glob @digit {[1,4,7] {color value @offcolor} default {expr @p_color}}) +(switch -glob @digit {[1,4,7] {color index @offcolor} default {expr @p_color}}) pop /p_col5 {0 0 0 } -(switch @digit {2 {color value @offcolor} default {expr @p_color}}) +(switch @digit {2 {color index @offcolor} default {expr @p_color}}) pop /p_col4 {0 0 0 } -(switch -glob @digit {[0,2,6,8] {expr @p_color} default {color value @offcolor}}) +(switch -glob @digit {[0,2,6,8] {expr @p_color} default {color index @offcolor}}) pop /p_col3 {1.000 1.000 1.000 } -(switch -glob @digit {[0-1,7] {color value @offcolor} default {expr @p_color}}) +(switch -glob @digit {[0-1,7] {color index @offcolor} default {expr @p_color}}) pop /p_col2 {0 0 0 } -(switch -glob @digit {[5-6] {color value @offcolor} default {expr @p_color}}) +(switch -glob @digit {[5-6] {color index @offcolor} default {expr @p_color}}) pop /p_col1 {0 0 0 } -(switch -glob @digit {[1-3,7] {color value @offcolor} default {expr @p_color}}) +(switch -glob @digit {[1-3,7] {color index @offcolor} default {expr @p_color}}) pop /p_col {0 0 0 } -(switch @digit {1 - 4 {color value @offcolor} default {expr @p_color}}) +(switch @digit {1 - 4 {color index @offcolor} default {expr @p_color}}) pop /@offcolor (white) /@digit (0) (lindex {0 1 2 3 4 5 6 7 8 9} 0) pop >> begingate p_col4 scb diff --git a/lib/fonts/courier_cyrillic.xfe b/lib/fonts/courier_cyrillic.xfe new file mode 100644 index 0000000..1d0b791 --- /dev/null +++ b/lib/fonts/courier_cyrillic.xfe @@ -0,0 +1,50 @@ +% XCircuit Font encoding (XFE) file +% (Note that there are no vector font Cyrillic characters here, +% but it can be used with the Cairo graphics interface.) +name: Courier-Cyrillic +file: courier.lps +family: Courier +weight: normal +shape: normal +type: PostScript +encoding: ISO8859-5 +Cr::nullchar Cr::nullchar Cr::nullchar Cr::nullchar Cr::nullchar Cr::nullchar +Cr::nullchar Cr::nullchar Cr::nullchar Cr::nullchar Cr::nullchar Cr::nullchar +Cr::nullchar Cr::nullchar Cr::nullchar Cr::nullchar Cr::nullchar Cr::nullchar +Cr::nullchar Cr::nullchar Cr::nullchar Cr::nullchar Cr::nullchar Cr::nullchar +Cr::nullchar Cr::nullchar Cr::nullchar Cr::nullchar Cr::nullchar Cr::nullchar +Cr::nullchar Cr::nullchar +Cr::space Cr::exclam Cr::quote Cr::pound Cr::dollar Cr::percent Cr::ampersand +Cr::apostrophe Cr::lparen Cr::rparen Cr::asterisk Cr::plus Cr::comma Cr::minus +Cr::period Cr::slash Cr::zero Cr::one Cr::two Cr::three Cr::four Cr::five +Cr::six Cr::seven Cr::eight Cr::nine Cr::colon Cr::semi Cr::less Cr::equal +Cr::more Cr::question Cr::at Cr::A Cr::B Cr::C Cr::D Cr::E Cr::F Cr::G Cr::H +Cr::I Cr::J Cr::K Cr::L Cr::M Cr::N Cr::O Cr::P Cr::Q Cr::R Cr::S Cr::T Cr::U +Cr::V Cr::W Cr::X Cr::Y Cr::Z Cr::lbracket Cr::backslash Cr::rbracket Cr::caret +Cr::underscore Cr::apostrophe Cr::a Cr::b Cr::c Cr::d Cr::e Cr::f Cr::g Cr::h +Cr::i Cr::j Cr::k Cr::l Cr::m Cr::n Cr::o Cr::p Cr::q Cr::r Cr::s Cr::t Cr::u +Cr::v Cr::w Cr::x Cr::y Cr::z Cr::lbrace Cr::vbar Cr::rbrace Cr::tilde Cr::nullchar +Cr::nullchar Cr::nullchar Cr::nullchar Cr::nullchar Cr::nullchar Cr::nullchar +Cr::nullchar Cr::nullchar Cr::nullchar Cr::nullchar Cr::nullchar Cr::nullchar +Cr::nullchar Cr::nullchar Cr::nullchar Cr::nullchar Cr::nullchar Cr::nullchar +Cr::nullchar Cr::nullchar Cr::nullchar Cr::nullchar Cr::nullchar Cr::nullchar +Cr::nullchar Cr::nullchar Cr::nullchar Cr::nullchar Cr::nullchar Cr::nullchar +Cr::nullchar Cr::nullchar Cr::nullchar Cr::upexclam Cr::cent +Cr::lb Cr::aslash Cr::yen Cr::itf Cr::sy1 Cr::sy2 Cr::apos2 Cr::lqt Cr::lgqt +Cr::lsang Cr::rsang Cr::fi Cr::fl Cr::x Cr::minus Cr::dag Cr::ddag Cr::dot +Cr::x Cr::para Cr::bullet Cr::comma2 Cr::rqt2 Cr::rqt Cr::rgqt Cr::dots +Cr::perzer Cr::x Cr::uqest Cr::x Cr::grave Cr::acute Cr::hat Cr::tilchar +Cr::bar Cr::uu Cr::dot Cr::umlaut Cr::x Cr::circ Cr::cedilla Cr::x +Cr::uml2 Cr::ced2 Cr::vee Cr::emdash Cr::x Cr::x Cr::x +Cr::x Cr::x Cr::x Cr::x Cr::x Cr::x +Cr::x Cr::x Cr::x Cr::x Cr::x Cr::x +Cr::x Cr::AE Cr::x Cr::ordfem Cr::x Cr::x +Cr::x Cr::x Cr::Lslash Cr::Oslash Cr::OE Cr::ordmasc Cr::x +Cr::x Cr::x Cr::x Cr::x Cr::ae Cr::x +Cr::x Cr::x Cr::onesup Cr::x Cr::x Cr::lslash +Cr::osl Cr::oe Cr::sset Cr::x Cr::x Cr::x Cr::x + +derived: Courier-Bold-Cyrillic bold normal PostScript +derived: Courier-Italic-Cyrillic normal italic PostScript +derived: Courier-BoldItalic-Cyrillic bold italic PostScript + diff --git a/lib/fonts/helvetica_cyrillic.xfe b/lib/fonts/helvetica_cyrillic.xfe new file mode 100644 index 0000000..e6414a3 --- /dev/null +++ b/lib/fonts/helvetica_cyrillic.xfe @@ -0,0 +1,50 @@ +% XCircuit Font encoding (XFE) file +% (Note that there are no vector font Cyrillic characters here, +% but it can be used with the Cairo graphics interface.) +name: Helvetica-Cyrillic +file: helvetica.lps +family: Helvetica +weight: normal +shape: normal +type: PostScript +encoding: ISO8859-5 +Hv::nullchar Hv::nullchar Hv::nullchar Hv::nullchar Hv::nullchar Hv::nullchar +Hv::nullchar Hv::nullchar Hv::nullchar Hv::nullchar Hv::nullchar Hv::nullchar +Hv::nullchar Hv::nullchar Hv::nullchar Hv::nullchar Hv::nullchar Hv::nullchar +Hv::nullchar Hv::nullchar Hv::nullchar Hv::nullchar Hv::nullchar Hv::nullchar +Hv::nullchar Hv::nullchar Hv::nullchar Hv::nullchar Hv::nullchar Hv::nullchar +Hv::nullchar Hv::nullchar +Hv::space Hv::exclam Hv::quote Hv::pound Hv::dollar Hv::percent Hv::ampersand +Hv::apostrophe Hv::lparen Hv::rparen Hv::asterisk Hv::plus Hv::comma Hv::minus +Hv::period Hv::slash Hv::zero Hv::one Hv::two Hv::three Hv::four Hv::five +Hv::six Hv::seven Hv::eight Hv::nine Hv::colon Hv::semi +Hv::less Hv::equal Hv::more Hv::question Hv::at Hv::A Hv::B Hv::C Hv::D +Hv::E Hv::F Hv::G Hv::H Hv::I Hv::J Hv::K Hv::L Hv::M Hv::N Hv::O Hv::P +Hv::Q Hv::R Hv::S Hv::T Hv::U Hv::V Hv::W Hv::X Hv::Y Hv::Z Hv::lbracket +Hv::backslash Hv::rbracket Hv::caret Hv::underscore Hv::apostrophe Hv::a +Hv::b Hv::c Hv::d Hv::e Hv::f Hv::g Hv::h Hv::i Hv::j Hv::k Hv::l Hv::m +Hv::n Hv::o Hv::p Hv::q Hv::r Hv::s Hv::t Hv::u Hv::v Hv::w Hv::x +Hv::y Hv::z Hv::lbrace Hv::vbar Hv::rbrace Hv::tilde +Hv::nullchar Hv::nullchar Hv::nullchar Hv::nullchar Hv::nullchar Hv::nullchar +Hv::nullchar Hv::nullchar Hv::nullchar Hv::nullchar Hv::nullchar Hv::nullchar +Hv::nullchar Hv::nullchar Hv::nullchar Hv::nullchar Hv::nullchar Hv::nullchar +Hv::nullchar Hv::nullchar Hv::nullchar Hv::nullchar Hv::nullchar Hv::nullchar +Hv::nullchar Hv::nullchar Hv::nullchar Hv::nullchar Hv::nullchar Hv::nullchar +Hv::nullchar Hv::nullchar Hv::nullchar Hv::nullchar Hv::upexclam Hv::cent +Hv::lb Hv::aslash Hv::yen Hv::itf Hv::sy1 Hv::sy2 Hv::apos2 Hv::lqt Hv::lgqt +Hv::lsang Hv::rsang Hv::fi Hv::fl Hv::x Hv::dash Hv::dag Hv::ddag Hv::dot +Hv::x Hv::para Hv::bullet Hv::comma2 Hv::rqt2 Hv::rqt Hv::rgqt Hv::dots +Hv::perzer Hv::x Hv::uqest Hv::x Hv::grave Hv::acute Hv::hat Hv::tilchar +Hv::bar Hv::uu Hv::dot Hv::umlaut Hv::x Hv::circ Hv::cedilla Hv::x +Hv::uml2 Hv::ced2 Hv::vee Hv::emdash Hv::x Hv::x Hv::x +Hv::x Hv::x Hv::x Hv::x Hv::x Hv::x +Hv::x Hv::x Hv::x Hv::x Hv::x Hv::x +Hv::x Hv::AE Hv::x Hv::ordfem Hv::x Hv::x +Hv::x Hv::x Hv::Lslash Hv::Oslash Hv::OE Hv::ordmasc Hv::x +Hv::x Hv::x Hv::x Hv::x Hv::ae Hv::x +Hv::x Hv::x Hv::onesup Hv::x Hv::x Hv::lslash +Hv::osl Hv::oe Hv::sset Hv::x Hv::x Hv::x Hv::x + +derived: Helvetica-Bold-Cyrillic bold normal PostScript +derived: Helvetica-Oblique-Cyrillic normal italic PostScript +derived: Helvetica-BoldOblique-Cyrillic bold italic PostScript diff --git a/lib/fonts/testtest.ps b/lib/fonts/testtest.ps new file mode 100644 index 0000000..8a5e05c --- /dev/null +++ b/lib/fonts/testtest.ps @@ -0,0 +1,206 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Title: testtest.ps +%%Creator: XCircuit v3.9 rev63 +%%CreationDate: Mon Sep 25 21:09:24 2017 +%%Pages: 1 +%%BoundingBox: 68 68 694 604 +%%DocumentNeededResources: font Times-Roman +%%EndComments +%%BeginProlog +% +% PostScript prolog for output from xcircuit +% Version: 3.9 +% +% Electrical circuit (and otherwise general) drawing program +% +% Written by Tim Edwards 8/5/93--4/12/16 (tim@opencircuitdesign.com) +% The Johns Hopkins University (1993-2004) +% MultiGiG, Inc. (2004-2012) +% Open Circuit Design (2012-2016) +% +%%BeginResource: procset XCIRCproc 3.9 1 +% +% supporting definitions --- these are the primary xcircuit types. + +/XCIRCsave save def +/topmat matrix currentmatrix def + +/fontslant { /slant exch def [1 0 slant 1 0 0] + exch findfont exch makefont dup length dict /ndict exch def + { 1 index /FID ne { ndict 3 1 roll put } { pop pop } ifelse } forall + ndict definefont pop} def +/ul { count 0 gt { dup type /stringtype eq showflag 1 eq and { gsave + currentpoint topmat setmatrix 0 0 moveto 2 index stringwidth pop (_) + false charpath flattenpath pathbbox grestore exch pop 1 index + sub setlinewidth exch pop currentpoint 3 -1 roll add moveto 0 + rlineto stroke moveto } if } if } def +/ol { count 0 gt { dup type /stringtype eq showflag 1 eq and { gsave gsave + currentpoint topmat setmatrix 2 index stringwidth pop 3 index + true charpath flattenpath pathbbox grestore exch pop + exch pop topmat setmatrix (_) true charpath pathbbox grestore + exch pop 1 index sub setlinewidth exch pop currentpoint + exch 4 1 roll exch sub add moveto pop 0 rlineto stroke + moveto } if } if } def +/stW { gsave currentpoint newpath moveto true charpath flattenpath + pathbbox pop exch pop sub grestore } def +/Ts {mark Tabs aload pop counttomark 1 add array astore /Tabs exch def Tabs + 0 currentpoint pop put} def +/Tbn {mark Tabs aload pop counttomark dup 2 add 1 roll cleartomark 1 sub} def +/Tb { 0 1 Tbn {Tabs exch get dup currentpoint pop lt + {currentpoint exch pop moveto exit} {pop} ifelse } for } def +/Tf { Tbn -1 0 {Tabs exch get dup currentpoint pop gt + {currentpoint exch pop moveto exit} {pop} ifelse } for } def +/qS { (aa) stW (a a) stW sub 4 div 0 Kn } def +/hS { qS qS } def +/pspc 0 def +/cf0 { scalefont setfont } bind def +/Kn { dup kY add /kY exch def rmoveto } bind def +/ss { /fscale fscale 0.67 mul def currentfont 0.67 cf0 0 fscale0 fscale mul + 0.33 mul neg Kn} def +/Ss { /fscale fscale 0.67 mul def currentfont 0.67 cf0 0 fscale0 fscale mul + 0.67 mul Kn } def +/ns { 0 kY neg Kn /kY 0 def /fscale 1.0 def xfont0 1.0 cf0 } def +/MR { /twidth exch def } def +/CRx { } def +/CR { ns 0 /Bline Bline fscale0 neg add def Bline moveto CRx } def +/cf { dup type /realtype ne {1.0} if exch findfont exch kY 0 eq + { 40 mul dup /fscale0 exch def cf0 /xfont0 currentfont def} + {fscale0 mul fscale mul cf0} ifelse } def +/ctmk { counttomark dup 2 add -1 roll pop } bind def +/label { gsave translate 0 0 moveto dup scale neg + /rotval exch def /twidth 100000 def /just exch def just 128 and + 0 gt {/mshow {pop} def} {/mshow {show} def} ifelse just 16 and 0 + gt {gsave rotval rotate 0 1 dtransform gsave pagemat setmatrix + idtransform exch grestore 1 0 dtransform gsave pagemat setmatrix + idtransform exch grestore dup abs 1e-9 lt {pop mul 0 gt} {3 1 roll + pop pop 0 lt} ifelse grestore {-1 /rotval rotval neg def /just just + dup 3 and 1 ne {3 xor} if def} {1} ifelse exch -1e-9 lt {-1 /rotval + rotval neg def /just just dup 12 and 4 ne {12 xor} if def} {1} + ifelse scale } if /showflag 0 def /fspc pspc def /Bline 0 def + /numlines 0 def /padding 0 array def /Tabs 0 array def + /fscale 1.0 def /kY 0 def gsave /CRx { linewid padding + aload pop numlines 1 add dup /numlines exch def array astore + /padding exch def /linewid 0 def } def dup 1 add copy dup 1 0 + dtransform exch atan rotate {exch dup type /stringtype eq {gsave dup + gsave newpath 0 0 moveto true charpath flattenpath pathbbox pop exch + pop exch pop grestore currentpoint pop add dup /linewid exch def twidth + ge {grestore CR exch 1 add dup 2 add {CR} exch 1 roll exch} {grestore} + ifelse true charpath flattenpath} {dup type /arraytype eq {exec} {12 + string cvs true charpath flattenpath} ifelse} ifelse} repeat + CRx /CRx {padding aload pop just 1280 and 0 gt {blockwid exch sub just + 1024 and 0 gt {0.5 mul} if} {pop 0} ifelse 0 rmoveto numlines 1 sub + dup /numlines exch def array astore /padding exch def} def exch pop + pathbbox grestore 4 copy pop exch pop exch sub /blockwid exch def + 3 -1 roll pop 3 1 roll just 1 and 0 gt {just 2 and + 0 gt {exch pop neg fspc sub} {exch sub 0.5 mul neg} ifelse} {pop neg + fspc add} ifelse exch Bline exch just 4 and 0 gt {just 8 and 0 gt + {exch pop neg fspc sub} {add 0.5 mul neg} ifelse} {pop neg fspc add} + ifelse rotval rotate Kn currentpoint translate /showflag 1 def /Bline + 0 def /Tabs 0 array def /fscale 1.0 def /kY 0 def CRx {dup type + /stringtype eq {mshow} {dup type /arraytype eq {exec} {12 string cvs + mshow} ifelse} ifelse} repeat grestore endclip} def +/pinlabel { 4 index 32 and 0 ne hlevel 0 eq or { /pspc 10 def label + /pspc 0 def } { pop pop pop pop pop {pop} repeat } ifelse } def +/pinglobal { pinlabel } def +/infolabel { pinlabel } def +/graphic { gsave 4 index cvx exec /DataSource get resetfile translate 0 0 + moveto neg rotate dup scale cvx exec image grestore endclip} def + +/scb { setrgbcolor } bind def /sce { defColor aload pop scb } bind def +/cRedef {/defColor currentcolor 3 array astore def} def +/begingate {dup type /dicttype ne {1 dict} if begin % default params + dup type /dicttype ne {1 dict} if begin % instanced params + /hlevel hlevel 1 add def /defColor currentcolor sce 3 array astore + def gsave sce translate 0 0 moveto neg rotate dup type /nametype + eq not { dup abs currentlinewidth exch div setlinewidth } { pop } + ifelse dup abs scale clipped 1 and 1 eq {/clipped clipped 1 add def} + if} bind def +/endgate { /hlevel hlevel 1 sub def grestore defColor aload pop cRedef + scb end end endclip} bind def + +/hlevel 0 def +/endclip {clipped 1 and 1 eq {grestore /clipped clipped 1 sub def} if} def +/tmpa [1 0 0 1 0 0] def +/gar {8 8 true tmpa {<c0 c0 00 00 0c 0c 00 00>} imagemask} bind +{8 8 true tmpa {<30 70 60 02 03 07 06 20>} imagemask} bind +{8 8 true tmpa {<0c 1e 1e 0c c0 e1 e1 c0>} imagemask} bind +{8 8 true tmpa {<0f 0f 0f 0f f0 f0 f0 f0>} imagemask} bind +{8 8 true tmpa {<3f f3 e1 e1 f3 3f 1e 1e>} imagemask} bind +{8 8 true tmpa {<df cf 8f 9f fd fc f8 f9>} imagemask} bind +{8 8 true tmpa {<ff 3f 3f ff ff f3 f3 ff>} imagemask} bind 7 array astore def +/ppaint { gsave clip tmpa dup setmatrix pathbbox neg exch neg 4 2 roll + neg 4 -1 roll 2 copy gt {exch} if 8 div ceiling 8 mul 4 2 roll neg 2 copy + gt {exch} if 8 div ceiling 8 mul 3 -1 roll -8 5 -1 roll + { 3 index exch 5 exch put dup -8 3 index { 3 index + exch 4 exch put 3 index exec } for } for pop pop pop pop grestore } bind def +/setstyles { + currentlinewidth mul setlinewidth /style exch def style 2048 and 0 gt + clipped 1 and 0 eq and {clip newpath /clipped clipped 1 add def} { + style 1 and 0 gt not {closepath} if + style 1024 and 0 gt {2 setlinecap 0 setlinejoin} if + style 2 and 0 gt {currentlinewidth 4 mul dup 2 array astore 0 setdash} if + style 4 and 0 gt {0.5 currentlinewidth 4 mul 2 array astore 0 setdash} if + gsave style 16 and 0 gt { style 224 and -5 bitshift style 256 and 0 gt { + 7 exch sub 8 div dup 1 exch sub currentrgbcolor 3 array astore + {3 copy mul add 4 1 roll pop} forall pop pop setrgbcolor eofill} + {dup 7 lt {gar exch get ppaint} {pop eofill} ifelse} ifelse} + {style 256 and 0 gt {1 setgray eofill} if} ifelse grestore style 8 and 0 gt + style 512 eq or {newpath} {stroke} ifelse grestore endclip} ifelse} def + +/addtoy {exch dup dup 2 mul 3 add 1 roll -1 1 { 4 1 roll dup 4 1 roll add + 4 -1 roll 2 mul 1 add index 2 mul 2 add 2 roll} for pop} def +/addtoy1 {1 exch addtoy pop} def +/addtoy3 {3 exch addtoy pop} def +/addtoy4 {4 exch addtoy pop} def +/addtox {exch dup dup 2 mul 3 add 1 roll -1 1 { 4 1 roll dup 4 1 roll 3 -1 roll + add exch 4 -1 roll 2 mul 1 add index 2 mul 2 add 2 roll} for pop} def +/addtox1 {1 exch addtox pop} def +/addtox3 {3 exch addtox pop} def +/addtox4 {4 exch addtox pop} def +/polygon { gsave /num exch def moveto num 1 sub {lineto} repeat setstyles } def +/xcarc { gsave newpath arc setstyles } def +/elb { matrix currentmatrix 7 -1 roll 7 -1 roll translate 5 1 roll 4 -1 roll + 3 index div 1 scale } def +/ele { 0 4 1 roll 0 4 1 roll } bind def +/ellipse { gsave elb newpath ele arc setmatrix setstyles } def +/pellip { elb ele arc setmatrix } def +/nellip { elb ele arcn setmatrix } def +/spline { gsave moveto curveto setstyles } def +/polyc { {lineto} repeat } bind def +/beginpath { gsave moveto } bind def +/endpath { setstyles } bind def +/bop { 1 setlinecap 2 setlinejoin 6 setmiterlimit 0 0 0 scb cRedef + /clipped 0 def} def +/psinsertion {/PSobj save def /showpage {} def /setpagedevice {pop} def bop + rotate translate dup scale} def +/end_insert {PSobj restore} def +/setpagemat {/pagemat matrix currentmatrix def} def +/inchscale {setpagemat 0.375 mul dup scale} def +/cmscale {setpagemat 0.35433071 mul dup scale} def + +%%EndResource +%%EndProlog +% XCircuit output starts here. + +%%BeginSetup + + +%%EndSetup + +%%Page: testtest 1 +%%PageOrientation: Portrait +%%PageBoundingBox: 72 72 690 600 +/pgsave save def bop +1.0000 inchscale +2.6000 setlinewidth 992 896 translate + +0.679 1.000 0.184 scb +512 1.000 -800 -704 -800 704 848 704 848 -704 4 polygon +sce +(this page has a bounding box.) {/Times-Roman cf} 2 16 0.000 0.700 -336 288 +label +pgsave restore showpage + +%%Trailer +XCIRCsave restore +%%EOF diff --git a/lib/fonts/times_roman_cyrillic.xfe b/lib/fonts/times_roman_cyrillic.xfe new file mode 100644 index 0000000..1e7b15c --- /dev/null +++ b/lib/fonts/times_roman_cyrillic.xfe @@ -0,0 +1,51 @@ +% XCircuit Font encoding (XFE) file +% (Note that there are no vector font Cyrillic characters here, +% but it can be used with the Cairo graphics interface.) +name: Times-Roman-Cyrillic +file: times_roman.lps +family: Times-Roman +weight: normal +shape: normal +type: PostScript +encoding: ISO8859-5 +TR::nullchar TR::nullchar TR::nullchar TR::nullchar TR::nullchar TR::nullchar +TR::nullchar TR::nullchar TR::nullchar TR::nullchar TR::nullchar TR::nullchar +TR::nullchar TR::nullchar TR::nullchar TR::nullchar TR::nullchar TR::nullchar +TR::nullchar TR::nullchar TR::nullchar TR::nullchar TR::nullchar TR::nullchar +TR::nullchar TR::nullchar TR::nullchar TR::nullchar TR::nullchar TR::nullchar +TR::nullchar TR::nullchar +TR::space TR::exclam TR::quote TR::pound TR::dollar TR::percent TR::ampersand +TR::apostrophe TR::lparen TR::rparen TR::asterisk TR::plus TR::comma TR::minus +TR::period TR::slash TR::zero TR::one TR::two TR::three TR::four TR::five +TR::six TR::seven TR::eight TR::nine TR::colon TR::semi TR::less TR::equal +TR::more TR::question TR::at TR::A TR::B TR::C TR::D TR::E TR::F TR::G TR::H +TR::I TR::J TR::K TR::L TR::M TR::N TR::O TR::P TR::Q TR::R TR::S TR::T TR::U +TR::V TR::W TR::X TR::Y TR::Z TR::lbracket TR::backslash TR::rbracket +TR::caret TR::underscore TR::apostrophe TR::a TR::b TR::c TR::d TR::e +TR::f TR::g TR::h TR::i TR::j TR::k TR::l TR::m TR::n TR::o TR::p TR::q +TR::r TR::s TR::t TR::u TR::v TR::w TR::x TR::y TR::z TR::lbrace TR::vbar +TR::rbrace TR::tilde +TR::nullchar TR::nullchar TR::nullchar TR::nullchar TR::nullchar TR::nullchar +TR::nullchar TR::nullchar TR::nullchar TR::nullchar TR::nullchar TR::nullchar +TR::nullchar TR::nullchar TR::nullchar TR::nullchar TR::nullchar TR::nullchar +TR::nullchar TR::nullchar TR::nullchar TR::nullchar TR::nullchar TR::nullchar +TR::nullchar TR::nullchar TR::nullchar TR::nullchar +TR::nullchar TR::nullchar TR::nullchar TR::nullchar TR::nullchar TR::nullchar +TR::upexclam TR::cent TR::lb TR::aslash TR::yen TR::itf TR::sy1 TR::sy2 +TR::apos2 TR::lqt TR::lgqt TR::lsang TR::rsang TR::fi TR::fl TR::x +TR::minus TR::dag TR::ddag TR::dot TR::x TR::para TR::bullet TR::comma2 +TR::rqt2 TR::rqt TR::rgqt TR::dots TR::perzer TR::x TR::uqest TR::x +TR::grave TR::acute TR::hat TR::tilchar TR::bar TR::uu TR::dot TR::umlaut +TR::x TR::circ TR::cedilla TR::x TR::uml2 TR::ced2 TR::vee TR::emdash +TR::x TR::x TR::x TR::x TR::x +TR::x TR::x TR::x TR::x TR::x TR::x +TR::x TR::x TR::x TR::x TR::x TR::AE +TR::x TR::ordfem TR::x TR::x TR::x TR::x +TR::Lslash TR::Oslash TR::OE TR::ordmasc TR::x TR::x +TR::x TR::x TR::x TR::ae TR::x TR::x +TR::x TR::onesup TR::x TR::x TR::lslash TR::osl TR::oe +TR::sset TR::x TR::x TR::x TR::x + +derived: Times-Bold-Cyrillic bold normal PostScript +derived: Times-Italic-Cyrillic normal italic PostScript +derived: Times-BoldItalic-Cyrillic bold italic PostScript diff --git a/lib/isolatin2.enc b/lib/isolatin2.enc new file mode 100644 index 0000000..5fcccfd --- /dev/null +++ b/lib/isolatin2.enc @@ -0,0 +1,39 @@ +%%BeginResource: encoding ISOLatin2Encoding +/ISOLatin2Encoding [ +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright +/parenleft /parenright /asterisk /plus /comma /minus /period /slash +/zero /one /two /three /four /five /six /seven +/eight /nine /colon /semicolon /less /equal /greater /question +% 100 +/at /A /B /C /D /E /F /G +/H /I /J /K /L /M /N /O +/P /Q /R /S /T /U /V /W +/X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore +/quoteleft /a /b /c /d /e /f /g +/h /i /j /k /l /m /n /o +/p /q /r /s /t /u /v /w +/x /y /z /braceleft /bar /braceright /asciitilde /.notdef +% 200 +/.notdef /emdash /AE /ordfeminine /Oslash /OE /ordmasculine /ae +/dotlessi /oslash /oe /threesuperior /thorn /twosuperior /threequarters /Eth +/trademark /registered /onequarter /Thorn /logicalnot /plusminus /minus /onesuperior +/copyright /mu /eth /brokenbar /onehalf /dotlessj /Euro /.notdef +/space /Aogonek /breve /Lslash /currency /Lcaron /Sacute /section +/dieresis /Scaron /Scedilla /Tcaron /Zacute /hyphen /Zcaron /Zdotaccent +/degree /aogonek /ogonek /lslash /acute /lcaron /sacute /caron +/cedilla /scaron /scedilla /tcaron /zacute /hungarumlaut /zcaron /zdotaccent +% 300 +/Racute /Aacute /Acircumflex /Abreve /Adieresis /Lacute /Cacute /Ccedilla +/Ccaron /Eacute /Eogonek /Edieresis /Ecaron /Iacute /Icircumflex /Dcaron +/Eth /Nacute /Ncaron /Oacute /Ocircumflex /Ohungarumlaut /Odieresis /multiply +/Rcaron /Uring /Uacute /Uhungarumlaut /Udieresis /Yacute /Tcedilla /germandbls +/racute /aacute /acircumflex /abreve /adieresis /lacute /cacute /ccedilla +/ccaron /eacute /eogonek /edieresis /ecaron /iacute /icircumflex /dcaron +/dbar /nacute /ncaron /oacute /ocircumflex /ohungarumlaut /odieresis /divide +/rcaron /uring /uacute /uhungarumlaut /udieresis /yacute /tcedilla /dotaccent +] def +%%EndResource diff --git a/lib/isolatin5.enc b/lib/isolatin5.enc new file mode 100644 index 0000000..c2b7b7c --- /dev/null +++ b/lib/isolatin5.enc @@ -0,0 +1,40 @@ +%%BeginResource: encoding ISOLatin5Encoding +/ISOLatin5Encoding [ +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright +/parenleft /parenright /asterisk /plus /comma /minus /period /slash +/zero /one /two /three /four /five /six /seven +/eight /nine /colon /semicolon /less /equal /greater /question +% 100 +/at /A /B /C /D /E /F /G +/H /I /J /K /L /M /N /O +/P /Q /R /S /T /U /V /W +/X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore +/quoteleft /a /b /c /d /e /f /g +/h /i /j /k /l /m /n /o +/p /q /r /s /t /u /v /w +/x /y /z /braceleft /bar /braceright /asciitilde /.notdef +% 200 +/.notdef /.notdef /quotesinglbase /florin /quotedblbase /ellipsis /dagger +/daggerdbl /circumflex /perthousand /Scaron /guilsinglleft /OE /.notdef +/.notdef /.notdef /.notdef /quoteleft /quoteright /quotedblleft +/quotedblright /bullet /endash /emdash /tilde /trademark /scaron +/guilsinglright /oe /.notdef /.notdef /Ydieresis +/space /exclamdown /cent /sterling /currency /yen /brokenbar /section +/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron +/degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /bullet +/cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown +% 300 +/Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla +/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis +/Gbreve /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply +/Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Idotaccent /Scedilla /germandbls +/agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla +/egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis +/gbreve /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide +/oslash /ugrave /uacute /ucircumflex /udieresis /dotlessi /scedilla /ydieresis +] def +%%EndResource diff --git a/lib/tcl/bparams.tcl b/lib/tcl/bparams.tcl index 55c7198..8bf3de5 100644 --- a/lib/tcl/bparams.tcl +++ b/lib/tcl/bparams.tcl @@ -10,7 +10,7 @@ bind .xcircuit.mainframe.mainarea.drawing <ButtonPress-3> { \ if {[eventmode] == "normal" && [select get] == {} \ && [select here] != {}} { - xcircuit::prompteditparams {substring numeric expression} + xcircuit::prompteditparams } else { standardaction %b down %s } diff --git a/lib/tcl/edif.tcl b/lib/tcl/edif.tcl index c1dc5bc..3cd5c7f 100644 --- a/lib/tcl/edif.tcl +++ b/lib/tcl/edif.tcl @@ -241,44 +241,44 @@ proc parse_geometry {elemtype elemdata} { foreach dtext $dparams { set dtk [lindex $dtext 0] switch $dtk { - justify { + anchor { set jval [lindex $dtext 1] switch $jval { UPPERRIGHT { - label $handle justify top - label $handle justify right + label $handle anchor top + label $handle anchor right } CENTERRIGHT { - label $handle justify middle - label $handle justify right + label $handle anchor middle + label $handle anchor right } LOWERRIGHT { - label $handle justify bottom - label $handle justify right + label $handle anchor bottom + label $handle anchor right } UPPERCENTER { - label $handle justify top - label $handle justify center + label $handle anchor top + label $handle anchor center } CENTERCENTER { - label $handle justify middle - label $handle justify center + label $handle anchor middle + label $handle anchor center } LOWERCENTER { - label $handle justify bottom - label $handle justify center + label $handle anchor bottom + label $handle anchor center } UPPERLEFT { - label $handle justify top - label $handle justify left + label $handle anchor top + label $handle anchor left } CENTERLEFT { - label $handle justify middle - label $handle justify left + label $handle anchor middle + label $handle anchor left } LOWERLEFT { - label $handle justify bottom - label $handle justify left + label $handle anchor bottom + label $handle anchor left } } } diff --git a/lib/tcl/files.tcl b/lib/tcl/files.tcl index 6a8f075..34394e3 100644 --- a/lib/tcl/files.tcl +++ b/lib/tcl/files.tcl @@ -51,6 +51,7 @@ proc xcircuit::writeall {} { technology save $tname } } else { + page ${pageno} update page ${pageno} save } } diff --git a/lib/tcl/mousehint.tcl b/lib/tcl/mousehint.tcl index 9d1e8d4..66fda5c 100644 --- a/lib/tcl/mousehint.tcl +++ b/lib/tcl/mousehint.tcl @@ -10,11 +10,11 @@ proc xcircuit::automousehint {window} { set frame [winfo top $window] - set btext [bindkey $window -compat Button1] + set btext [$window bindkey -compat Button1] ${frame}.infobar.mousehints.left configure -text $btext - set btext [bindkey $window -compat Button2] + set btext [$window bindkey -compat Button2] ${frame}.infobar.mousehints.middle configure -text $btext - set btext [bindkey $window -compat Button3] + set btext [$window bindkey -compat Button3] ${frame}.infobar.mousehints.right configure -text $btext } @@ -46,6 +46,7 @@ proc xcircuit::mousehint_create {name} { mousehint_bindings ${name} ${name}.infobar.mousehints + xcircuit::automousehint ${name}.mainframe.mainarea.drawing xcircuit::mousehint_show ${name} } @@ -79,24 +80,24 @@ proc xcircuit::mousehint_hide { name } { #------------------------------------------------------------------------ # Highlights buttons on the mouse_canvas when the user # presses the corresponding mouse buttons -# Seems unnescesary, but without it who would guess that those +# Seems unnecessary, but without it who would guess that those # rectangles are supposed to look like mouse buttons? #------------------------------------------------------------------------ proc xcircuit::mousehint_bindings { name mouse_frame } { - bind all <Button-1> "${mouse_frame}.left configure -state active ; \ + bind ${name} <Button-1> "${mouse_frame}.left configure -state active ; \ xcircuit::automousehint ${name}.mainframe.mainarea.drawing" - bind all <Button-2> "${mouse_frame}.middle configure -state active ; \ + bind ${name} <Button-2> "${mouse_frame}.middle configure -state active ; \ xcircuit::automousehint ${name}.mainframe.mainarea.drawing" - bind all <Button-3> "${mouse_frame}.right configure -state active ; \ + bind ${name} <Button-3> "${mouse_frame}.right configure -state active ; \ xcircuit::automousehint ${name}.mainframe.mainarea.drawing" - bind all <ButtonRelease-1> "${mouse_frame}.left configure -state normal" - bind all <ButtonRelease-2> "${mouse_frame}.middle configure -state normal" - bind all <ButtonRelease-3> "${mouse_frame}.right configure -state normal" + bind ${name} <ButtonRelease-1> "${mouse_frame}.left configure -state normal" + bind ${name} <ButtonRelease-2> "${mouse_frame}.middle configure -state normal" + bind ${name} <ButtonRelease-3> "${mouse_frame}.right configure -state normal" - bind all <KeyPress> "xcircuit::automousehint ${name}.mainframe.mainarea.drawing" + bind ${name} <KeyPress> "xcircuit::automousehint ${name}.mainframe.mainarea.drawing" bind ${mouse_frame}.title <ButtonPress-1> "::xcircuit::mousehint_hide ${name}" } diff --git a/lib/tcl/resource.tcl b/lib/tcl/resource.tcl index 4700e97..8d2550c 100644 --- a/lib/tcl/resource.tcl +++ b/lib/tcl/resource.tcl @@ -2,77 +2,99 @@ # XCircuit Resource setup for TCL #-------------------------------- -option add *xcircuit.width 1200 -option add *xcircuit.height 930 -option add *xcircuit*activeBackground #a07650 -option add *xcircuit*foreground #a07650 -option add *xcircuit*activeForeground beige -option add *xcircuit*font -*-times-medium-r-normal--12-* - -option add *xcircuit1.width 900 -option add *xcircuit1.height 700 -option add *xcircuit1*activeBackground #a07650 -option add *xcircuit1*foreground #a07650 -option add *xcircuit1*activeForeground beige -option add *xcircuit1*font -*-times-medium-r-normal--12-* - -option add *xcircuit2.width 700 -option add *xcircuit2.height 500 -option add *xcircuit2*activeBackground #a07650 -option add *xcircuit2*foreground #a07650 -option add *xcircuit2*activeForeground beige -option add *xcircuit2*font -*-times-medium-r-normal--12-* - -option add *menubar.filebutton*background beige -option add *menubar.editbutton*background beige -option add *menubar.textbutton*background beige -option add *menubar.optionsbutton*background beige -option add *menubar.windowbutton*background beige -option add *menubar.netlistbutton*background beige -option add *menubar*font -*-times-bold-r-normal--12-* - -option add *librarymenu*activeBackground #805630 -option add *librarymenu*foreground #805630 -option add *librarymenu*activeForeground beige -option add *librarymenu*font -*-times-medium-r-normal--12-* -option add *librarymenu*background beige - -option add *pagemenu*activeBackground #805630 -option add *pagemenu*foreground #805630 -option add *pagemenu*activeForeground beige -option add *pagemenu*font -*-times-medium-r-normal--12-* -option add *pagemenu*background beige - -option add *filelist*activeBackground #805630 -option add *filelist*foreground #805630 -option add *filelist*background white -option add *filelist*activeForeground beige -option add *filelist*font -*-times-medium-r-normal--12-* -option add *filelist*txt*font -*-courier-medium-r-normal--12-* - -option add *output*activeBackground #805630 -option add *output*foreground #805630 -option add *output*background white -option add *output*activeForeground beige -option add *output*font -*-times-medium-r-normal--12-* -option add *output*txt*font -*-courier-medium-r-normal--12-* - -option add *output.textent.butp.psmenu*background beige -option add *output.textent.txtf.sizb.sizemenu*background beige -option add *output.textent.buto.orientmenu*background beige - -option add *help*activeBackground #805630 -option add *help*foreground #805630 -option add *help*background white -option add *help*activeForeground beige -option add *help*font -*-times-medium-r-normal--12-* -option add *help*txt*font -*-times-courier-r-normal--12-* - -option add *dialog*activeBackground #805630 -option add *dialog*foreground #805630 -option add *dialog*background white -option add *dialog*activeForeground beige -option add *dialog*font -*-times-medium-r-normal--12-* -option add *dialog*txt*font -*-courier-medium-r-normal--12-* +option add *background #a07650 startupFile +option add *borderwidth 1 startupFile + +option add *mainarea.corner.background brown4 startupFile +option add *message.background beige startupFile +option add *message1.background beige startupFile +option add *message2.background beige startupFile + +option add *xcircuit.width 1200 startupFile +option add *xcircuit.height 930 startupFile +option add *xcircuit*activeBackground #a07650 startupFile +option add *xcircuit*foreground #a07650 startupFile +option add *xcircuit*activeForeground beige startupFile +option add *xcircuit*font -*-times-medium-r-normal--12-* startupFile + +option add *xcircuit1.width 900 startupFile +option add *xcircuit1.height 700 startupFile +option add *xcircuit1*activeBackground #a07650 startupFile +option add *xcircuit1*foreground #a07650 startupFile +option add *xcircuit1*activeForeground beige startupFile +option add *xcircuit1*font -*-times-medium-r-normal--12-* startupFile + +option add *xcircuit2.width 700 startupFile +option add *xcircuit2.height 500 startupFile +option add *xcircuit2*activeBackground #a07650 startupFile +option add *xcircuit2*foreground #a07650 startupFile +option add *xcircuit2*activeForeground beige startupFile +option add *xcircuit2*font -*-times-medium-r-normal--12-* startupFile + +option add *menubar.filebutton*background beige startupFile +option add *menubar.editbutton*background beige startupFile +option add *menubar.textbutton*background beige startupFile +option add *menubar.optionsbutton*background beige startupFile +option add *menubar.windowbutton*background beige startupFile +option add *menubar.netlistbutton*background beige startupFile +option add *menubar*font -*-times-bold-r-normal--12-* startupFile + +option add *librarymenu*activeBackground #805630 startupFile +option add *librarymenu*foreground #805630 startupFile +option add *librarymenu*activeForeground beige startupFile +option add *librarymenu*font -*-times-medium-r-normal--12-* startupFile +option add *librarymenu*background beige startupFile + +option add *pagemenu*activeBackground #805630 startupFile +option add *pagemenu*foreground #805630 startupFile +option add *pagemenu*activeForeground beige startupFile +option add *pagemenu*font -*-times-medium-r-normal--12-* startupFile +option add *pagemenu*background beige startupFile + +option add *filelist*activeBackground #805630 startupFile +option add *filelist*foreground #805630 startupFile +option add *filelist*background white startupFile +option add *filelist*activeForeground beige startupFile +option add *filelist*font -*-times-medium-r-normal--12-* startupFile +option add *filelist*txt*font -*-courier-medium-r-normal--12-* startupFile + +option add *output*activeBackground #805630 startupFile +option add *output*foreground #805630 startupFile +option add *output*background white startupFile +option add *output*activeForeground beige startupFile +option add *output*font -*-times-medium-r-normal--12-* startupFile +option add *output*txt*font -*-courier-medium-r-normal--12-* startupFile + +option add *output.textent.butp.psmenu*background beige startupFile +option add *output.textent.txtf.sizb.sizemenu*background beige startupFile +option add *output.textent.buto.orientmenu*background beige startupFile + +option add *help*activeBackground #805630 startupFile +option add *help*foreground #805630 startupFile +option add *help*background white startupFile +option add *help*activeForeground beige startupFile +option add *help*font -*-times-medium-r-normal--12-* startupFile +option add *help*txt*font -*-times-courier-r-normal--12-* startupFile + +option add *dialog*activeBackground #805630 startupFile +option add *dialog*foreground #805630 startupFile +option add *dialog*background white startupFile +option add *dialog*activeForeground beige startupFile +option add *dialog*font -*-times-medium-r-normal--12-* startupFile +option add *dialog*txt*font -*-courier-medium-r-normal--12-* startupFile + +option add *makesymbol*activeBackground #805630 startupFile +option add *makesymbol*foreground #805630 startupFile +option add *makesymbol*background white startupFile +option add *makesymbol*activeForeground beige startupFile +option add *makesymbol*font -*-times-medium-r-normal--12-* startupFile +option add *makesymbol*txt*font -*-courier-medium-r-normal--12-* startupFile + +option add *savetech*activeBackground #805630 startupFile +option add *savetech*foreground #805630 startupFile +option add *savetech*background white startupFile +option add *savetech*activeForeground beige startupFile +option add *savetech*font -*-times-medium-r-normal--12-* startupFile +option add *savetech*txt*font -*-courier-medium-r-normal--12-* startupFile # End of Resource configuration file. diff --git a/lib/tcl/symbol.tcl b/lib/tcl/symbol.tcl index 8197978..9198205 100644 --- a/lib/tcl/symbol.tcl +++ b/lib/tcl/symbol.tcl @@ -34,6 +34,7 @@ proc xcircuit::getsubckttext {name} { } } } + deselect selected return "" } @@ -57,8 +58,8 @@ proc xcircuit::makesymbol {{filename ""} {orderedpins ""}} { config suspend true ;# suspend graphics and change count - set techname [.dialog.techself.techselect cget -text] - set symbolname [.dialog.textent.txt get] + set techname [.makesymbol.techself.techselect cget -text] + set symbolname [.makesymbol.textent.txt get] if {[string length $symbolname] == 0} { set symbolname [page label] if {[string length $symbolname] == 0 || [string first "Page " $symbolname] >= 0} { @@ -80,6 +81,7 @@ proc xcircuit::makesymbol {{filename ""} {orderedpins ""}} { # Therefore, create an object but don't use xcircuit::symbol if {$filename == ""} { + deselect selected xcircuit::symbol make ${techname}${symbolname} $XCOps(library); set schematicname [schematic get] set noschem 0 @@ -98,10 +100,10 @@ proc xcircuit::makesymbol {{filename ""} {orderedpins ""}} { foreach j $oldpinlabels { delete $j } - set leftpins [.dialog.pinself.left.list index end] - set toppins [.dialog.pinself.top.list index end] - set rightpins [.dialog.pinself.right.list index end] - set botpins [.dialog.pinself.bottom.list index end] + set leftpins [.makesymbol.pinself.left.list index end] + set toppins [.makesymbol.pinself.top.list index end] + set rightpins [.makesymbol.pinself.right.list index end] + set botpins [.makesymbol.pinself.bottom.list index end] set hpins $leftpins if {$rightpins > $leftpins} {set hpins $rightpins} @@ -135,14 +137,14 @@ proc xcircuit::makesymbol {{filename ""} {orderedpins ""}} { for {set j 0} {$j < $rightpins} {incr j} { set tabx [expr $x - $qtrspace] polygon make 2 "$x $y" "$tabx $y" - set pintext [.dialog.pinself.right.list get $j] + set pintext [.makesymbol.pinself.right.list get $j] lappend pinlabels $pintext set tlab [label make pin "$pintext" "$x $y"] - label $tlab justify left - label $tlab justify middle + label $tlab anchor left + label $tlab anchor middle set nlab [element $tlab copy relative "-$halfspace 0"] label $nlab type normal - label $nlab justify right + label $nlab anchor right incr y $pinspace deselect selected } @@ -151,14 +153,14 @@ proc xcircuit::makesymbol {{filename ""} {orderedpins ""}} { for {set j 0} {$j < $leftpins} {incr j} { set tabx [expr $x + $qtrspace] polygon make 2 "$x $y" "$tabx $y" - set pintext [.dialog.pinself.left.list get $j] + set pintext [.makesymbol.pinself.left.list get $j] lappend pinlabels $pintext set tlab [label make pin "$pintext" "$x $y"] - label $tlab justify right - label $tlab justify middle + label $tlab anchor right + label $tlab anchor middle set nlab [element $tlab copy relative "$halfspace 0"] label $nlab type normal - label $nlab justify left + label $nlab anchor left incr y $pinspace deselect selected } @@ -167,15 +169,15 @@ proc xcircuit::makesymbol {{filename ""} {orderedpins ""}} { for {set j 0} {$j < $botpins} {incr j} { set taby [expr $y + $qtrspace] polygon make 2 "$x $y" "$x $taby" - set pintext [.dialog.pinself.bottom.list get $j] + set pintext [.makesymbol.pinself.bottom.list get $j] lappend pinlabels $pintext set tlab [label make pin "$pintext" "$x $y"] rotate $tlab 270 - label $tlab justify right - label $tlab justify middle + label $tlab anchor right + label $tlab anchor middle set nlab [element $tlab copy relative "0 $halfspace"] label $nlab type normal - label $nlab justify left + label $nlab anchor left incr x $pinspace deselect selected } @@ -184,23 +186,23 @@ proc xcircuit::makesymbol {{filename ""} {orderedpins ""}} { for {set j 0} {$j < $toppins} {incr j} { set taby [expr $y - $qtrspace] polygon make 2 "$x $y" "$x $taby" - set pintext [.dialog.pinself.top.list get $j] + set pintext [.makesymbol.pinself.top.list get $j] lappend pinlabels $pintext set tlab [label make pin "$pintext" "$x $y"] rotate $tlab 90 - label $tlab justify right - label $tlab justify middle + label $tlab anchor right + label $tlab anchor middle set nlab [element $tlab copy relative "0 -$halfspace"] label $nlab type normal - label $nlab justify left + label $nlab anchor left incr x $pinspace deselect selected } deselect selected set nlab [label make "$symbolname" {0 0}] - label $nlab justify middle - label $nlab justify center + label $nlab anchor middle + label $nlab anchor center element $nlab color set blue deselect selected @@ -213,7 +215,7 @@ proc xcircuit::makesymbol {{filename ""} {orderedpins ""}} { } set nlab [label make "{Parameter class} {Parameter index}" "0 -$pinspace"] - label $nlab justify center + label $nlab anchor center element $nlab color set blue deselect selected @@ -245,7 +247,7 @@ proc xcircuit::makesymbol {{filename ""} {orderedpins ""}} { set x [expr ([lindex $bbox 2] + [lindex $bbox 0]) / 2] set y [expr [lindex $bbox 1] - $pinspace] set nlab [label make info "$subckttext" "$x $y"] - label $nlab justify center + label $nlab anchor center deselect selected set y [expr $y - $pinspace] set nlab [label make info "spice-1:.ends" "$x $y"] @@ -283,7 +285,7 @@ proc xcircuit::makesymbol {{filename ""} {orderedpins ""}} { deselect selected set nlab [label make info "$itext" "0 $y"] - label $nlab justify center + label $nlab anchor center if {$noschem == 1} { deselect selected @@ -294,7 +296,7 @@ proc xcircuit::makesymbol {{filename ""} {orderedpins ""}} { set itext [list {Text "spice@1:%F"}] lappend itext [subst {Text "$filename"}] set nlab [label make info "$itext" "0 $y"] - label $nlab justify center + label $nlab anchor center deselect selected pop } else { @@ -353,19 +355,19 @@ proc xcircuit::getpinlist {schematicname} { #--------------------------------------------------------------------------- proc xcircuit::getselectedpinwidget {} { - set w .dialog.pinself.left.list + set w .makesymbol.pinself.left.list set result [$w curselection] if {$result != {}} {return $w} - set w .dialog.pinself.top.list + set w .makesymbol.pinself.top.list set result [$w curselection] if {$result != {}} {return $w} - set w .dialog.pinself.right.list + set w .makesymbol.pinself.right.list set result [$w curselection] if {$result != {}} {return $w} - set w .dialog.pinself.bottom.list + set w .makesymbol.pinself.bottom.list set result [$w curselection] if {$result != {}} {return $w} } @@ -392,7 +394,7 @@ proc xcircuit::movepinleft {} { set idx [$w curselection] set pinname [$w get $idx] $w delete $idx - .dialog.pinself.left.list insert end $pinname + .makesymbol.pinself.left.list insert end $pinname $w selection set $idx } } @@ -407,7 +409,7 @@ proc xcircuit::movepintop {} { set idx [$w curselection] set pinname [$w get $idx] $w delete $idx - .dialog.pinself.top.list insert end $pinname + .makesymbol.pinself.top.list insert end $pinname $w selection set $idx } @@ -423,7 +425,7 @@ proc xcircuit::movepinright {} { set idx [$w curselection] set pinname [$w get $idx] $w delete $idx - .dialog.pinself.right.list insert end $pinname + .makesymbol.pinself.right.list insert end $pinname $w selection set $idx } } @@ -438,7 +440,7 @@ proc xcircuit::movepinbottom {} { set idx [$w curselection] set pinname [$w get $idx] $w delete $idx - .dialog.pinself.bottom.list insert end $pinname + .makesymbol.pinself.bottom.list insert end $pinname $w selection set $idx } } @@ -491,6 +493,8 @@ proc xcircuit::addpinarranger {w {pinlist {}}} { # If so, we pass the ordered list to the symbol construction routine, and # we also prevent symbol pins from being deleted. + config suspend true ;# suspend graphics and change count + if {$pinlist == {}} { set pinlist [xcircuit::getpinlist [page label]] if {[xcircuit::getsubckttext [page label]] != {}} { @@ -543,6 +547,7 @@ proc xcircuit::addpinarranger {w {pinlist {}}} { button ${w}.bbar.movebottom -text "Move Bottom" -bg beige -command \ {xcircuit::movepinbottom} } + config suspend false if {$orderedpins == 0} { pack ${w}.bbar.remove -side left -ipadx 10 @@ -570,37 +575,26 @@ proc xcircuit::removepinarranger {w} { } #--------------------------------------------------------------------------- -# Redefine popupdialog to remove the pin arranger any time it is invoked. -#--------------------------------------------------------------------------- - -proc xcircuit::popupdialog {} { - xcircuit::removepinarranger .dialog - xcircuit::removelists .dialog - wm deiconify .dialog - focus .dialog.textent.txt -} - -#--------------------------------------------------------------------------- # Redefine the procedure for the "Make Matching Symbol" menu button. #--------------------------------------------------------------------------- proc xcircuit::promptmakesymbol {{name ""}} { global XCOps - .dialog.bbar.okay configure -command \ + .makesymbol.bbar.okay configure -command \ {if {[string first "Page " [page label]] >= 0} { \ - page label [.dialog.textent.txt get]}; \ + page label [.makesymbol.textent.txt get]}; \ xcircuit::makesymbol; \ - wm withdraw .dialog} - .dialog.textent.title.field configure -text "Confirm symbol name:" - .dialog.textent.txt delete 0 end + wm withdraw .makesymbol} + .makesymbol.textent.title.field configure -text "Confirm symbol name:" + .makesymbol.textent.txt delete 0 end if {[string length $name] == 0 && [string first "Page " [page label]] < 0} { set name [page label]} - .dialog.textent.txt insert 0 $name + .makesymbol.textent.txt insert 0 $name - xcircuit::popupdialog - xcircuit::addtechlist .dialog "Technology: " - xcircuit::addliblist .dialog "Place in: " - xcircuit::addpinarranger .dialog + xcircuit::popupdialog .makesymbol + xcircuit::addtechlist .makesymbol "Technology: " + xcircuit::addliblist .makesymbol "Place in: " + xcircuit::addpinarranger .makesymbol } #--------------------------------------------------------------------------- @@ -631,17 +625,17 @@ proc xcircuit::spice2symbol {filename {subcktname ""}} { if {[string length $infolabel] == 0} {return} set pinlabels [lrange $infolabel 2 end] - .dialog.bbar.okay configure -command \ + .makesymbol.bbar.okay configure -command \ "if {[string first {Page } [page label]] >= 0} { \ - page label [.dialog.textent.txt get]}; \ + page label [.makesymbol.textent.txt get]}; \ xcircuit::makesymbol $filename [list $pinlabels]; \ - wm withdraw .dialog" - .dialog.textent.title.field configure -text "Confirm symbol name:" - .dialog.textent.txt delete 0 end - .dialog.textent.txt insert 0 [lindex $infolabel 1] - xcircuit::popupdialog - xcircuit::addliblist .dialog "Place in: " - xcircuit::addpinarranger .dialog $pinlabels + wm withdraw .makesymbol" + .makesymbol.textent.title.field configure -text "Confirm symbol name:" + .makesymbol.textent.txt delete 0 end + .makesymbol.textent.txt insert 0 [lindex $infolabel 1] + xcircuit::popupdialog .makesymbol + xcircuit::addliblist .makesymbol "Place in: " + xcircuit::addpinarranger .makesymbol $pinlabels } #--------------------------------------------------------------------------- diff --git a/lib/tcl/text.tcl b/lib/tcl/text.tcl index 22c2241..49c95ea 100644 --- a/lib/tcl/text.tcl +++ b/lib/tcl/text.tcl @@ -128,6 +128,7 @@ proc xcircuit::autoincr {{value 1} {position first}} { if {$nopreselect} { deselect undo series end + refresh } } else { if {$nopreselect} { diff --git a/lib/tcl/tkcon.tcl b/lib/tcl/tkcon.tcl index bcf4dab..dc53218 100755 --- a/lib/tcl/tkcon.tcl +++ b/lib/tcl/tkcon.tcl @@ -238,18 +238,18 @@ proc ::tkcon::Init {} { if {![interp issafe]} {cd [file dirname [info script]]} set envHome PREF_FOLDER set rcfile tkcon.cfg - set histfile tkcon.hst + set histfile xcircuit_tkcon.hst catch {console hide} } windows { set envHome HOME set rcfile tkcon.cfg - set histfile tkcon.hst + set histfile xcircuit_tkcon.hst } unix { set envHome HOME set rcfile .tkconrc - set histfile .tkcon_history + set histfile .xcircuit_tkcon_hst } } if {[info exists env($envHome)]} { diff --git a/lib/tcl/wrapper.tcl b/lib/tcl/wrapper.tcl index 20486e0..412b565 100644 --- a/lib/tcl/wrapper.tcl +++ b/lib/tcl/wrapper.tcl @@ -24,8 +24,8 @@ proc xcircuit::new_window { name } { # All the internal frames frame ${name}.menubar - frame ${name}.infobar -borderwidth 1 -bg #a07650 - frame ${name}.mainframe -borderwidth 1 -bg #a07650 + frame ${name}.infobar + frame ${name}.mainframe grid propagate ${name} false grid ${name}.menubar -sticky news -row 0 -column 0 @@ -40,7 +40,7 @@ proc xcircuit::new_window { name } { grid columnconfigure ${name} 1 -weight 1 frame ${name}.mainframe.mainarea - frame ${name}.mainframe.toolbar -bg #a07650 -borderwidth 1 + frame ${name}.mainframe.toolbar pack ${name}.mainframe.toolbar -side right -fill y pack ${name}.mainframe.mainarea -expand true -fill both @@ -48,9 +48,9 @@ proc xcircuit::new_window { name } { set drawing ${name}.mainframe.mainarea.drawing simple $drawing -bg white -commandproc "focus $drawing ; set XCOps(focus) $name" - simple ${name}.mainframe.mainarea.sbleft -width 13 -bg #a07650 - simple ${name}.mainframe.mainarea.sbbottom -height 13 -bg #a07650 - simple ${name}.mainframe.mainarea.corner -width 13 -height 13 -bg brown4 + simple ${name}.mainframe.mainarea.sbleft -width 13 + simple ${name}.mainframe.mainarea.sbbottom -height 13 + simple ${name}.mainframe.mainarea.corner -width 13 -height 13 # The drawing area and its scrollbars @@ -86,17 +86,16 @@ proc xcircuit::new_window { name } { label ${name}.message -text \ "Welcome to Xcircuit v${XCIRCUIT_VERSION} rev ${XCIRCUIT_REVISION}" \ - -background beige -justify left -anchor w + -justify left -anchor w grid ${name}.message -row 0 -column 1 -sticky news -ipadx 10 button ${name}.infobar.symb -text "Symbol" -bg gray30 -fg white button ${name}.infobar.schem -text "Schematic" -bg red -fg white button ${name}.infobar.mode -text "Wire Mode" -bg skyblue2 -fg gray20 - label ${name}.infobar.message1 -text "Editing: Page 1" \ - -background beige + label ${name}.infobar.message1 -text "Editing: Page 1" label ${name}.infobar.message2 -text "Grid 1/6 in : Snap 1/12 in" \ - -background beige -justify left -anchor w + -justify left -anchor w pack ${name}.infobar.symb ${name}.infobar.schem ${name}.infobar.message1 \ ${name}.infobar.mode -side left -ipadx 6 -fill y pack ${name}.infobar.message2 -ipadx 6 -expand true -fill both @@ -160,19 +159,23 @@ proc xcircuit::new_window { name } { # These are supposed to disable the scroll wheel on the scrollbars. . . - bind ${name}.mainframe.mainarea.sbleft <Button-4> {} - bind ${name}.mainframe.mainarea.sbleft <Button-5> {} - bind ${name}.mainframe.mainarea.sbbottom <Button-4> {} - bind ${name}.mainframe.mainarea.sbbottom <Button-5> {} - if {$tcl_platform(platform) == "windows"} { bind $name <FocusIn> \ "catch {config focus ${drawing} ; focus ${drawing}; \ set XCOps(focus) ${name} ; xcircuit::updatedialog}" + + bind ${name}.mainframe.mainarea.sbleft <MouseWheel> {} + bind ${name}.mainframe.mainarea.sbbottom <MouseWheel> {} + } else { bind $drawing <Enter> {focus %W} bind $name <FocusIn> "catch {config focus $drawing ; \ set XCOps(focus) ${name} ; xcircuit::updatedialog}" + + bind ${name}.mainframe.mainarea.sbleft <Button-4> {} + bind ${name}.mainframe.mainarea.sbleft <Button-5> {} + bind ${name}.mainframe.mainarea.sbbottom <Button-4> {} + bind ${name}.mainframe.mainarea.sbbottom <Button-5> {} } # Window-specific variable defaults (variables associated with toggle @@ -184,6 +187,7 @@ proc xcircuit::new_window { name } { set XCWinOps(${name},colorval) inherit set XCWinOps(${name},jhoriz) left set XCWinOps(${name},jvert) bottom + set XCWinOps(${name},justif) left set XCWinOps(${name},linestyle) solid set XCWinOps(${name},fillamount) 0 set XCWinOps(${name},opaque) false @@ -195,7 +199,7 @@ proc xcircuit::new_window { name } { set XCWinOps(${name},showbbox) false set XCWinOps(${name},fontfamily) Helvetica set XCWinOps(${name},fontstyle) normal - set XCWinOps(${name},fontencoding) Standard + set XCWinOps(${name},fontencoding) ISOLatin1 set XCWinOps(${name},fontlining) normal set XCWinOps(${name},fontscript) normal set XCWinOps(${name},gridstyle) "internal units" @@ -221,7 +225,7 @@ proc xcircuit::new_window { name } { set XCWinOps(${name},xposparam) false set XCWinOps(${name},yposparam) false set XCWinOps(${name},styleparam) false - set XCWinOps(${name},justparam) false + set XCWinOps(${name},anchorparam) false set XCWinOps(${name},startparam) false set XCWinOps(${name},endparam) false set XCWinOps(${name},radiusparam) false @@ -253,12 +257,25 @@ proc xcircuit::new_window { name } { #----------------------------------------------------------------- # Function bindings for the mouse scroll wheel. + # Note that Windows uses MouseWheel and direction passed as %D, + # while Linux uses Button-4 and Button-5. #----------------------------------------------------------------- - xcircuit::keybind <Button-4> { pan up 0.05 ; refresh} $drawing - xcircuit::keybind <Button-5> { pan down 0.05 ; refresh} $drawing - xcircuit::keybind <Shift-Button-4> { pan left 0.05 ; refresh} $drawing - xcircuit::keybind <Shift-Button-5> { pan right 0.05 ; refresh} $drawing + if {$tcl_platform(platform) == "windows"} { + xcircuit::keybind <MouseWheel> {if { %D/120 >= 1} \ + {pan up 0.1 ; refresh} else {pan down 0.1 ; refresh}} $drawing + xcircuit::keybind <Shift-MouseWheel> {if { %D/120 >= 1} \ + {pan left 0.1 ; refresh} else {pan right 0.1 ; refresh}} $drawing + xcircuit::keybind <Control-MouseWheel> {if { %D/120 >= 1} \ + {zoom in ; refresh} else {zoom out ; refresh}} $drawing + } else { + xcircuit::keybind <Button-4> { pan up 0.05 ; refresh} $drawing + xcircuit::keybind <Button-5> { pan down 0.05 ; refresh} $drawing + xcircuit::keybind <Shift-Button-4> { pan left 0.05 ; refresh} $drawing + xcircuit::keybind <Shift-Button-5> { pan right 0.05 ; refresh} $drawing + xcircuit::keybind <Control-Button-4> { zoom in ; refresh} $drawing + xcircuit::keybind <Control-Button-5> { zoom out ; refresh} $drawing + } #----------------------------------------------------------------- # Evaluate registered callback procedures @@ -273,6 +290,8 @@ proc xcircuit::new_window { name } { #---------------------------------------------------------------------- proc xcircuit::closewindow {name} { + global XCOps + set winlist [config windownames] if {[llength $winlist] > 1} { if {[lsearch $winlist $name] != -1} { @@ -280,6 +299,7 @@ proc xcircuit::closewindow {name} { set newwin [lindex [config windownames] 0] destroy [winfo top $name] config focus $newwin + set XCOps(focus) [winfo top $newwin] } } else { quit @@ -359,22 +379,22 @@ proc xcircuit::getinitstate {wname} { # Support procedures for tag callbacks #---------------------------------------------------------------------- -proc xcircuit::popupdialog {} { - set wstate [xcircuit::getinitstate .dialog] - xcircuit::removelists .dialog - wm deiconify .dialog - if {"$wstate" != "normal"} {centerwin .dialog} - raise .dialog - focus .dialog.textent.txt +proc xcircuit::popupdialog {{w .dialog}} { + set wstate [xcircuit::getinitstate ${w}] + xcircuit::removelists ${w} + wm deiconify ${w} + if {"$wstate" != "normal"} {centerwin ${w}} + raise ${w} + focus ${w}.textent.txt } -proc xcircuit::popupfilelist {} { - set wstate [xcircuit::getinitstate .filelist] - xcircuit::removelists .filelist - wm deiconify .filelist - centerwin .filelist - raise .filelist - focus .filelist.textent.txt +proc xcircuit::popupfilelist {{w .filelist}} { + set wstate [xcircuit::getinitstate ${w}] + xcircuit::removelists ${w} + wm deiconify ${w} + centerwin ${w} + raise ${w} + focus ${w}.textent.txt } #---------------------------------------------------------------------- @@ -420,64 +440,64 @@ proc xcircuit::setsheetsize {} { set ycm [lindex $slist 2] if {$xcm == 21.0 && $ycm == 29.7} { - set XCOps(sheetsize) a4 - .output.textent.txtf.sizb configure -text "A4" + set XCOps(sheetsize) a4 + .output.textent.txtf.sizb configure -text "A4" } elseif {$xcm == 29.7 && $ycm == 42.0} { - set XCOps(sheetsize) a3 - .output.textent.txtf.sizb configure -text "A3" + set XCOps(sheetsize) a3 + .output.textent.txtf.sizb configure -text "A3" } elseif {$xcm == 14.8 && $ycm == 18.4} { - set XCOps(sheetsize) a5 - .output.textent.txtf.sizb configure -text "A5" + set XCOps(sheetsize) a5 + .output.textent.txtf.sizb configure -text "A5" } elseif {$xcm == 25.7 && $ycm == 36.4} { - set XCOps(sheetsize) b4 - .output.textent.txtf.sizb configure -text "B4" + set XCOps(sheetsize) b4 + .output.textent.txtf.sizb configure -text "B4" } elseif {$xcm == 18.2 && $ycm == 25.7} { - set XCOps(sheetsize) b5 - .output.textent.txtf.sizb configure -text "B5" + set XCOps(sheetsize) b5 + .output.textent.txtf.sizb configure -text "B5" } else { - set XCOps(sheetsize) special - .output.textent.txtf.sizb configure -text "Special" + set XCOps(sheetsize) special + .output.textent.txtf.sizb configure -text "Special" } } elseif {$coordstyle == "in"} { set xin [lindex $slist 0] set yin [lindex $slist 2] if {$xin == 8.5 && $yin == 11.0} { - set XCOps(sheetsize) letter - .output.textent.txtf.sizb configure -text Letter + set XCOps(sheetsize) letter + .output.textent.txtf.sizb configure -text Letter } elseif {$xin == 8.5 && $yin == 14.0} { - set XCOps(sheetsize) legal - .output.textent.txtf.sizb configure -text Legal + set XCOps(sheetsize) legal + .output.textent.txtf.sizb configure -text Legal } elseif {$xin == 5.5 && $yin == 8.5} { - set XCOps(sheetsize) statement - .output.textent.txtf.sizb configure -text Statement + set XCOps(sheetsize) statement + .output.textent.txtf.sizb configure -text Statement } elseif {$xin == 11.0 && $yin == 17.0} { - set XCOps(sheetsize) tabloid - .output.textent.txtf.sizb configure -text Tabloid + set XCOps(sheetsize) tabloid + .output.textent.txtf.sizb configure -text Tabloid } elseif {$xin == 17.0 && $yin == 11.0} { - set XCOps(sheetsize) ledger - .output.textent.txtf.sizb configure -text Ledger + set XCOps(sheetsize) ledger + .output.textent.txtf.sizb configure -text Ledger } elseif {$xin == 8.5 && $yin == 13.0} { - set XCOps(sheetsize) folio - .output.textent.txtf.sizb configure -text Folio + set XCOps(sheetsize) folio + .output.textent.txtf.sizb configure -text Folio } elseif {$xin == 10.0 && $yin == 14.0} { - set XCOps(sheetsize) tenfourteen - .output.textent.txtf.sizb configure -text 10x14 + set XCOps(sheetsize) tenfourteen + .output.textent.txtf.sizb configure -text 10x14 } elseif {$xin == 7.5 && $yin == 10.0} { - set XCOps(sheetsize) executive - .output.textent.txtf.sizb configure -text Executive + set XCOps(sheetsize) executive + .output.textent.txtf.sizb configure -text Executive } elseif {$xin == 17.0 && $yin == 22.0} { - set XCOps(sheetsize) ansic - .output.textent.txtf.sizb configure -text "ANSI C" + set XCOps(sheetsize) ansic + .output.textent.txtf.sizb configure -text "ANSI C" } elseif {$xin == 22.0 && $yin == 34.0} { - set XCOps(sheetsize) ansid - .output.textent.txtf.sizb configure -text "ANSI D" + set XCOps(sheetsize) ansid + .output.textent.txtf.sizb configure -text "ANSI D" } elseif {$xin == 34.0 && $yin == 44.0} { - set XCOps(sheetsize) ansie - .output.textent.txtf.sizb configure -text "ANSI E" + set XCOps(sheetsize) ansie + .output.textent.txtf.sizb configure -text "ANSI E" } else { - set XCOps(sheetsize) special - .output.textent.txtf.sizb configure -text "Special" + set XCOps(sheetsize) special + .output.textent.txtf.sizb configure -text "Special" } } } @@ -569,6 +589,7 @@ proc xcircuit::pageupdate { {subcommand "none"} } { .output.title.field configure -text \ "PostScript output properties (Page [xcircuit::page])" set fname [xcircuit::page filename] + if {$fname == ""} {set fname [xcircuit::page label]} .output.textent.but1 configure -text Apply .output.textent.but2 configure -text Apply .output.textent.but3 configure -text Apply @@ -818,7 +839,7 @@ xcircuit::tag parameter { if {"%1" == "make"} {set cond true} else {set cond fal style {set XCWinOps($XCOps(focus),styleparam) $cond} "start angle" {set XCWinOps($XCOps(focus),startparam) $cond} "end angle" {set XCWinOps($XCOps(focus),endparam) $cond} - justification {set XCWinOps($XCOps(focus),justparam) $cond} + anchoring {set XCWinOps($XCOps(focus),anchorparam) $cond} radius {set XCWinOps($XCOps(focus),radiusparam) $cond} "minor axis" {set XCWinOps($XCOps(focus),minorparam) $cond} rotation {set XCWinOps($XCOps(focus),rotationparam) $cond} @@ -861,7 +882,7 @@ xcircuit::tag label {if {%# == 3} { } family {if {"%2" != "-all"} {set XCWinOps($XCOps(focus),fontfamily) %2}} style {set XCWinOps($XCOps(focus),fontstyle) %2} - justify { + anchor { switch -- %2 { top - bottom - @@ -869,10 +890,11 @@ xcircuit::tag label {if {%# == 3} { default {set XCWinOps($XCOps(focus),jhoriz) %2} } } + justify {set XCWinOps($XCOps(focus),justif) %2} flipinvariant {set XCWinOps($XCOps(focus),flipinvariant) %2} visible {set XCWinOps($XCOps(focus),pinvisible) %2} latex {set XCWinOps($XCOps(focus),latexmode) %2} - }} elseif {(%# == 4) && ("%1" == "justify")} { + }} elseif {(%# == 4) && ("%1" == "anchor")} { switch -- %2 { top - bottom - @@ -1157,6 +1179,18 @@ proc xcircuit::make_parameter_listbox {} { listbox .parameter.vallist -bg white listbox .parameter.parvals -bg white + # Code to get the listboxes to scroll in synchrony + bind .parameter.keylist <Button-4> {xcircuit::paramscroll -1} + bind .parameter.keylist <Button-5> {xcircuit::paramscroll 1} + bind .parameter.vallist <Button-4> {xcircuit::paramscroll -1} + bind .parameter.vallist <Button-5> {xcircuit::paramscroll 1} + bind .parameter.parvals <Button-4> {xcircuit::paramscroll -1} + bind .parameter.parvals <Button-5> {xcircuit::paramscroll 1} + # Also bind to the mouse wheel (Windows-specific, generally) + bind .parameter.keylist <MouseWheel> {xcircuit::paramscroll %D} + bind .parameter.vallist <MouseWheel> {xcircuit::paramscroll %D} + bind .parameter.parvals <MouseWheel> {xcircuit::paramscroll %D} + button .parameter.dismiss -text "Dismiss" -bg beige \ -command {wm withdraw .parameter} @@ -1206,110 +1240,150 @@ proc xcircuit::make_parameter_listbox {} { } } +#----------------------------------------------------------------- +# Scroll all listboxes in the .parameter window at the same +# time, in reponse to any one of them receiving a scroll event. +#----------------------------------------------------------------- + +proc xcircuit::paramscroll {value} { + global tcl_platform + set idx [.parameter.keylist nearest 0] + + if {$tcl_platform(platform) == "windows"} { + set idx [expr {$idx + $value / 120}] + } else { + set idx [expr {$idx + $value}] + } + + .parameter.keylist yview $idx + .parameter.vallist yview $idx + .parameter.parvals yview $idx + + # Important! This prohibits the default binding actions. + return -code break +} + # Update the dialog box, if it has been left visible # (Corrected 2/4/12: Don't delete contents except in these specific cases!) -proc xcircuit::updatedialog {} { +proc xcircuit::updatedialog {{w dialog}} { global XCOps - if {[xcircuit::getinitstate .dialog] == "normal"} { - switch -- $XCOps(dialog) { + if {[xcircuit::getinitstate .${w}] == "normal"} { + switch -- $XCOps(${w}) { linewidth { set btext [format "%g" [lindex [xcircuit::border get] 0]] - .dialog.textent.txt delete 0 end - .dialog.textent.txt insert 0 $btext + .${w}.textent.txt delete 0 end + .${w}.textent.txt insert 0 $btext } textscale { set cscale [xcircuit::label scale] - .dialog.textent.txt delete 0 end - .dialog.textent.txt insert 0 $cscale + .${w}.textent.txt delete 0 end + .${w}.textent.txt insert 0 $cscale } elementscale { set selects [xcircuit::select] if {$selects > 0} { set cscale [xcircuit::element scale] - .dialog.textent.txt delete 0 end - .dialog.textent.txt insert 0 $cscale + .${w}.textent.txt delete 0 end + .${w}.textent.txt insert 0 $cscale } } } } } -proc xcircuit::makedialogline {dframe textline} { - if {[catch {frame .dialog.${dframe} -bg beige}]} { - .dialog.${dframe}.title.field configure -text ${textline} +proc xcircuit::makedialogline {dframe textline {w dialog}} { + if {[catch {frame .${w}.${dframe} -bg beige}]} { + .${w}.${dframe}.title.field configure -text ${textline} } else { - pack .dialog.${dframe} -side top -padx 20 -pady 7 -fill x + pack .${w}.${dframe} -side top -padx 20 -pady 7 -fill x - frame .dialog.${dframe}.title -bg beige - entry .dialog.${dframe}.txt -bg white -relief sunken -width 50 + frame .${w}.${dframe}.title -bg beige + entry .${w}.${dframe}.txt -bg white -relief sunken -width 50 - pack .dialog.${dframe}.title -side top -fill x - pack .dialog.${dframe}.txt -side bottom -fill x -expand true + pack .${w}.${dframe}.title -side top -fill x + pack .${w}.${dframe}.txt -side bottom -fill x -expand true - label .dialog.${dframe}.title.field -text ${textline} -bg beige - pack .dialog.${dframe}.title.field -side left + label .${w}.${dframe}.title.field -text ${textline} -bg beige + pack .${w}.${dframe}.title.field -side left } } -proc xcircuit::removedialogline {dframe} { +proc xcircuit::removedialogline {dframe {w dialog}} { global XCOps - pack forget .dialog.${dframe} - destroy .dialog.${dframe} - set XCOps(dialog) 0 + pack forget .${w}.${dframe} + destroy .${w}.${dframe} + set XCOps(${w}) 0 } -#-------------------------------------- -# Create the simple popup prompt window -#-------------------------------------- +#-------------------------------------------- +# Create a simple popup prompt window +# With "Apply", "Okay", and "Cancel" buttons +#-------------------------------------------- -toplevel .dialog -bg beige -wm title .dialog "Dialog Box" -wm group .dialog . -wm protocol .dialog WM_DELETE_WINDOW {wm withdraw .dialog} -wm withdraw .dialog -set XCOps(dialog) 0 +proc make_simple_dialog {name} { + set window .${name} + toplevel ${window} -bg beige + wm title ${window} "Dialog Box" + wm group ${window} . + wm protocol ${window} WM_DELETE_WINDOW [subst {wm withdraw ${window}}] + wm withdraw ${window} + set XCOps(${name}) 0 -xcircuit::makedialogline textent "Select file to load:" + xcircuit::makedialogline textent "Select file to load:" ${name} -frame .dialog.bbar -bg beige -pack .dialog.bbar -side bottom -padx 20 -pady 7 -fill x + frame ${window}.bbar -bg beige + pack ${window}.bbar -side bottom -padx 20 -pady 7 -fill x -button .dialog.bbar.okay -text Okay -bg beige -command {.dialog.bbar.apply invoke ;\ - wm withdraw .dialog} -button .dialog.bbar.apply -text Apply -bg beige -button .dialog.bbar.cancel -text Cancel -bg beige -command {wm withdraw .dialog} + button ${window}.bbar.okay -text Okay -bg beige \ + -command [subst {${window}.bbar.apply invoke ;\ + wm withdraw ${window}}] + button ${window}.bbar.apply -text Apply -bg beige + button ${window}.bbar.cancel -text Cancel -bg beige -command \ + [subst {wm withdraw ${window}}] -bind .dialog.textent.txt <Return> {.dialog.bbar.apply invoke} + bind ${window}.textent.txt <Return> [subst {${window}.bbar.apply invoke}] -pack .dialog.bbar.okay -side left -ipadx 10 -pack .dialog.bbar.apply -side left -ipadx 10 -pack .dialog.bbar.cancel -side right -ipadx 10 + pack ${window}.bbar.okay -side left -ipadx 10 + pack ${window}.bbar.apply -side left -ipadx 10 + pack ${window}.bbar.cancel -side right -ipadx 10 +} #-------------------------------------- -# Create the query prompt window +# Create a query prompt window with +# "Okay" and "Cancel" buttons, and a +# "Select:" title message #-------------------------------------- -toplevel .query -bg beige -wm title .query "Query Dialog Box" -wm group .query . -wm protocol .query WM_DELETE_WINDOW {wm withdraw .query} -wm withdraw .query +proc make_query_dialog {name} { + set window .${name} + toplevel ${window} -bg beige + wm title ${window} "Query Dialog Box" + wm group ${window} . + wm protocol ${window} WM_DELETE_WINDOW [subst {wm withdraw ${window}}] + wm withdraw ${window} -frame .query.title -bg beige -frame .query.bbar -bg beige + frame ${window}.title -bg beige + frame ${window}.bbar -bg beige -pack .query.title -side top -padx 20 -pady 7 -fill x -pack .query.bbar -side bottom -padx 20 -pady 7 -fill x + pack ${window}.title -side top -padx 20 -pady 7 -fill x + pack ${window}.bbar -side bottom -padx 20 -pady 7 -fill x -label .query.title.field -text "Select:" -bg beige -pack .query.title.field -side left + label ${window}.title.field -text "Select:" -bg beige + pack ${window}.title.field -side left -button .query.bbar.okay -text Okay -bg beige -button .query.bbar.cancel -text Cancel -bg beige -command {wm withdraw .query} + button ${window}.bbar.okay -text Okay -bg beige + button ${window}.bbar.cancel -text Cancel -bg beige -command \ + [subst {wm withdraw ${window}}] -pack .query.bbar.okay -side left -ipadx 10 -pack .query.bbar.cancel -side right -ipadx 10 + pack ${window}.bbar.okay -side left -ipadx 10 + pack ${window}.bbar.cancel -side right -ipadx 10 +} + +make_query_dialog query +make_simple_dialog dialog +make_simple_dialog savetech +make_simple_dialog makesymbol #-------------------------------------------------------- # Generate all of the menu cascades @@ -1330,13 +1404,13 @@ proc xcircuit::printstring {stringlist} { return $p } -proc xcircuit::printjust {justif} { - switch [expr {$justif & 3}] { +proc xcircuit::printanchor {anchor} { + switch [expr {$anchor & 3}] { 0 {set p "left"} 1 {set p "center"} 3 {set p "right"} } - switch [expr {$justif & 12}] { + switch [expr {$anchor & 12}] { 0 {append p " bottom"} 4 {append p " middle"} 12 {append p " top"} @@ -1348,14 +1422,14 @@ proc xcircuit::labelmakeparam {} { global XCOps if {[xcircuit::select] > 0} { ;# this should be true. . . set XCOps(dialog) paramname - xcircuit::removedialogline textent2 ;# default is the selected text + xcircuit::removedialogline textent2 dialog ;# default is the selected text .dialog.bbar.apply configure -command \ [subst {xcircuit::parameter make substring \[.dialog.textent.txt get\];\ xcircuit::updateparams substring}] .dialog.textent.title.field configure -text "Parameter name:" + .dialog.textent.txt delete 0 end + xcircuit::popupdialog } - .dialog.textent.txt delete 0 end - xcircuit::popupdialog } proc xcircuit::promptmakeparam {{mode substring}} { @@ -1363,11 +1437,11 @@ proc xcircuit::promptmakeparam {{mode substring}} { set XCOps(dialog) paramdefault if {$mode == "label"} {set mode substring} - xcircuit::makedialogline textent2 "Default value:" + xcircuit::makedialogline textent2 "Default value:" dialog .dialog.bbar.apply configure -command \ [subst {xcircuit::parameter make $mode \ \[.dialog.textent.txt get\] \[.dialog.textent2.txt get\] -forward; \ - xcircuit::removedialogline textent2; \ + xcircuit::removedialogline textent2 dialog; \ xcircuit::updateparams $mode}] .dialog.textent.title.field configure -text \ "Parameter name:" @@ -1507,8 +1581,8 @@ proc xcircuit::updateparams { {mode {substring numeric expression}} } { "substring" { .parameter.vallist insert end [xcircuit::printstring $p_val] } - "justification" { - .parameter.vallist insert end [xcircuit::printjust $p_val] + "anchoring" { + .parameter.vallist insert end [xcircuit::printanchor $p_val] } default { .parameter.vallist insert end $p_val @@ -1536,16 +1610,16 @@ proc xcircuit::promptmakesymbol {{name ""}} { global XCOps set XCOps(dialog) makeobject - .dialog.bbar.apply configure -command \ + .makesymbol.bbar.apply configure -command \ {if {[string first "Page " [page label]] >= 0} { \ - page label [.dialog.textent.txt get]}; \ - xcircuit::symbol make [.dialog.textent.txt get] $XCOps(library)} - xcircuit::removedialogline textent2 - .dialog.textent.title.field configure -text "Name for new object:" - .dialog.textent.txt delete 0 end - .dialog.textent.txt insert 0 $name - xcircuit::popupdialog - xcircuit::addliblist .dialog "Place in: " + page label [.makesymbol.textent.txt get]}; \ + xcircuit::symbol make [.makesymbol.textent.txt get] $XCOps(library)} + xcircuit::removedialogline textent2 makesymbol + .makesymbol.textent.title.field configure -text "Name for new object:" + .makesymbol.textent.txt delete 0 end + .makesymbol.textent.txt insert 0 $name + xcircuit::popupdialog .makesymbol + xcircuit::addliblist .makesymbol Place in: " } #---------------------------------------------------------------------- @@ -1554,26 +1628,26 @@ proc xcircuit::prompttargettech {{name ""}} { global XCOps set XCOps(dialog) targettech - .dialog.bbar.apply configure -command { \ + .savetech.bbar.apply configure -command { \ set selects [xcircuit::select]; \ if {$selects > 0} { \ - if {[catch {set techname [.dialog.textent2.txt get]}]} {\ + if {[catch {set techname [.savetech.textent2.txt get]}]} {\ set techname $XCOps(technology)}; \ - technology objects $techname [.dialog.textent.txt get]}\ + technology objects $techname [.savetech.textent.txt get]}\ } - xcircuit::removedialogline textent2 - .dialog.textent.title.field configure -text "Objects to move:" - .dialog.textent.txt delete 0 end - .dialog.textent.txt insert 0 $name + xcircuit::removedialogline textent2 savetech + .savetech.textent.title.field configure -text "Objects to move:" + .savetech.textent.txt delete 0 end + .savetech.textent.txt insert 0 $name xcircuit::popupdialog - xcircuit::addtechlist .dialog "Target technology: " + xcircuit::addtechlist .savetech "Target technology: " # Add an additional selection to the tech menu for adding a new # technology namespace. This is relevant only to "prompttargettech". - .dialog.techself.techselect.menu add \ + .savetech.techself.techselect.menu add \ command -label "Add New Tech" -command \ - "xcircuit::makedialogline textent2 {New tech name:}" + "xcircuit::makedialogline textent2 {New tech name:}" savetech } #---------------------------------------------------------------------- @@ -1730,19 +1804,19 @@ proc xcircuit::promptsavetech {} { global XCOps set XCOps(dialog) techname - .dialog.bbar.apply configure -command \ - {xcircuit::technology save [.dialog.techself.techselect cget -text] \ - [.dialog.textent.txt get]} - .dialog.textent.title.field configure -text "Filename to save technology as:" - .dialog.textent.txt delete 0 end - xcircuit::popupdialog - xcircuit::addtechlist .dialog "Save which technology: " {(user)} true + .savetech.bbar.apply configure -command \ + {xcircuit::technology save [.savetech.techself.techselect cget -text] \ + [.savetech.textent.txt get]} + .savetech.textent.title.field configure -text "Filename to save technology as:" + .savetech.textent.txt delete 0 end + xcircuit::popupdialog .savetech + xcircuit::addtechlist .savetech "Save which technology: " {(user)} true set fname "" catch {set fname [technology filename $XCOps(technology)]} if {$fname == "(no associated file)"} { set fname $XCOps(technology).lps } - .dialog.textent.txt insert 0 $fname + .savetech.textent.txt insert 0 $fname } #---------------------------------------------------------------------- @@ -2008,7 +2082,7 @@ proc xcircuit::allcolorbuttons {window} { set colorlist [color get -all] set frame [winfo top $window] - set idx 0 + set idx 17 ;# NUMBER_OF_COLORS in xcircuit.h foreach colorrgb $colorlist { ${frame}.menubar.optionsbutton.optionsmenu.elementsmenu.colormenu \ add radio -image img_col$idx -activebackground $colorrgb \ @@ -2590,7 +2664,7 @@ proc xcircuit::makemenus {window} { $m add cascade -label "Style" -menu $m.stylemenu $m add cascade -label "Encoding" -menu $m.encodingmenu $m add cascade -label "Insert" -menu $m.insertmenu - $m add cascade -label "Justification" -menu $m.justifymenu + $m add cascade -label "Anchoring" -menu $m.anchormenu $m add command -label "Parameterize" \ -command {xcircuit::labelmakeparam} $m add command -label "Unparameterize" \ @@ -2657,21 +2731,28 @@ proc xcircuit::makemenus {window} { $m2 add command -label "Character" -command "xcircuit::label insert special" $m2 add command -label "Parameter" -command "xcircuit::prompteditparams" - set m2 [menu $m.justifymenu -tearoff 0] - $m2 add radio -label "Left Justified" -variable XCWinOps(${window},jhoriz) \ + set m2 [menu $m.anchormenu -tearoff 0] + $m2 add radio -label "Left Anchored" -variable XCWinOps(${window},jhoriz) \ + -value left -command "xcircuit::label anchor left" + $m2 add radio -label "Center Anchored" -variable XCWinOps(${window},jhoriz) \ + -value center -command "xcircuit::label anchor center" + $m2 add radio -label "Right Anchored" -variable XCWinOps(${window},jhoriz) \ + -value right -command "xcircuit::label anchor right" + $m2 add separator + $m2 add radio -label "Top Anchored" -variable XCWinOps(${window},jvert) \ + -value top -command "xcircuit::label anchor top" + $m2 add radio -label "Middle Anchored" -variable XCWinOps(${window},jvert) \ + -value middle -command "xcircuit::label anchor middle" + $m2 add radio -label "Bottom Anchored" -variable XCWinOps(${window},jvert) \ + -value bottom -command "xcircuit::label anchor bottom" + $m2 add separator + $m2 add radio -label "Left Justified" -variable XCWinOps(${window},justif) \ -value left -command "xcircuit::label justify left" - $m2 add radio -label "Center Justified" -variable XCWinOps(${window},jhoriz) \ + $m2 add radio -label "Center Justified" -variable XCWinOps(${window},justif) \ -value center -command "xcircuit::label justify center" - $m2 add radio -label "Right Justified" -variable XCWinOps(${window},jhoriz) \ + $m2 add radio -label "Right Justified" -variable XCWinOps(${window},justif) \ -value right -command "xcircuit::label justify right" $m2 add separator - $m2 add radio -label "Top Justified" -variable XCWinOps(${window},jvert) \ - -value top -command "xcircuit::label justify top" - $m2 add radio -label "Middle Justified" -variable XCWinOps(${window},jvert) \ - -value middle -command "xcircuit::label justify middle" - $m2 add radio -label "Bottom Justified" -variable XCWinOps(${window},jvert) \ - -value bottom -command "xcircuit::label justify bottom" - $m2 add separator $m2 add check -label "Flip Invariant" \ -variable XCWinOps(${window},flipinvariant) \ -onvalue true -offvalue false -command {xcircuit::label flipinvariant \ @@ -2851,11 +2932,11 @@ proc xcircuit::makemenus {window} { {if {$XCWinOps($XCOps(focus),yposparam)} \ {xcircuit::parameter make "y position"} \ {xcircuit::parameter replace "y position"}} - $m3 add check -label "Justification" -variable XCWinOps(${window},justparam) \ + $m3 add check -label "Anchoring" -variable XCWinOps(${window},anchorparam) \ -onvalue true -offvalue false -command \ - {if {$XCWinOps($XCOps(focus),justparam)} \ - {xcircuit::parameter make justification} \ - {xcircuit::parameter replace justification}} + {if {$XCWinOps($XCOps(focus),anchorparam)} \ + {xcircuit::parameter make anchoring} \ + {xcircuit::parameter replace anchoring}} $m3 add check -label "Rotation" -variable XCWinOps(${window},rotationparam) \ -onvalue true -offvalue false -command \ {if {$XCWinOps($XCOps(focus),rotationparam)} \ @@ -3051,7 +3132,7 @@ proc xcircuit::enable_mousehints {} { set XCOps(mousehints) 1 foreach window [config windownames] { set frame [winfo top $window] - xcircuit::mousehint_create $frame + catch {xcircuit::mousehint_create $frame} } } } @@ -3197,6 +3278,15 @@ proc xcircuit::makehelpwindow {} { message .help.listwin.win -width 200 -justify left -anchor n \ -relief groove -text "Click on a function for help text" + # Keep boxes aligned! + bind .help.listwin.keys <Button-4> {xcircuit::helpscroll -1} + bind .help.listwin.keys <Button-5> {xcircuit::helpscroll 1} + bind .help.listwin.func <Button-4> {xcircuit::helpscroll -1} + bind .help.listwin.func <Button-5> {xcircuit::helpscroll 1} + # Also bind to the mouse wheel (Windows-specific, generally) + bind .help.listwin.keys <MouseWheel> {xcircuit::helpscroll %D} + bind .help.listwin.func <MouseWheel> {xcircuit::helpscroll %D} + grid .help.listwin.func -row 0 -column 0 -sticky news -padx 1 -pady 1 grid .help.listwin.keys -row 0 -column 1 -sticky news -padx 1 -pady 1 grid .help.listwin.sb -row 0 -column 2 -sticky ns -padx 1 -pady 1 @@ -3209,6 +3299,28 @@ proc xcircuit::makehelpwindow {} { } #----------------------------------------------------------------- +# Scroll all listboxes in the .help.listwin window at the same +# time, in reponse to any one of them receiving a scroll event. +#----------------------------------------------------------------- + +proc xcircuit::helpscroll {value} { + global tcl_platform + set idx [.help.listwin.func nearest 0] + + if {$tcl_platform(platform) == "windows"} { + set idx [expr {$idx + $value / 120}] + } else { + set idx [expr {$idx + $value}] + } + + .help.listwin.func yview $idx + .help.listwin.keys yview $idx + + # Important! This prohibits the default binding actions. + return -code break +} + +#----------------------------------------------------------------- # Procedure to update and display the help window #----------------------------------------------------------------- diff --git a/lib/tcl/xcircuit.tcl.in b/lib/tcl/xcircuit.tcl.in index 3d4504b..5eee0d6 100755 --- a/lib/tcl/xcircuit.tcl.in +++ b/lib/tcl/xcircuit.tcl.in @@ -244,7 +244,7 @@ if {[string length $argv] == 0} { } unset tcllibdir -# The GUI wrapper iconfies the window while generating it +# The GUI wrapper iconifies the window while generating it catch {wm deiconify $XCOps(toplevel)} # Invoke the "wire" button by default diff --git a/lib/tcl/xcstartup.tcl b/lib/tcl/xcstartup.tcl index a117e04..f191818 100644 --- a/lib/tcl/xcstartup.tcl +++ b/lib/tcl/xcstartup.tcl @@ -28,15 +28,17 @@ if {[catch {set XCOps(fontoverride)}]} { loadfont courieriso.xfe loadfont symbol.xfe -# Alternate font encodings: Uncomment these if you want them -# loaded by default -# -# loadfont times_romaniso2.xfe -# loadfont courieriso2.xfe -# loadfont helveticaiso2.xfe -# loadfont times_romaniso5.xfe -# loadfont courieriso5.xfe -# loadfont helveticaiso5.xfe + # Alternate font encodings known to xcircuit + + loadfont times_romaniso2.xfe + loadfont courieriso2.xfe + loadfont helveticaiso2.xfe + loadfont times_romaniso5.xfe + loadfont courieriso5.xfe + loadfont helveticaiso5.xfe + loadfont times_roman_cyrillic.xfe + loadfont courier_cyrillic.xfe + loadfont helvetica_cyrillic.xfe } if {[catch {set XCOps(liboverride)}]} { diff --git a/lib/xcircps2.pro b/lib/xcircps2.pro index 60e3b99..39e9018 100644 --- a/lib/xcircps2.pro +++ b/lib/xcircps2.pro @@ -1,15 +1,16 @@ %%BeginProlog % % PostScript prolog for output from xcircuit -% Version: 3.8 +% Version: 3.9 % % Electrical circuit (and otherwise general) drawing program % -% Written by Tim Edwards 8/5/93--11/1/10 (tim.edwards@multigig.com) +% Written by Tim Edwards 8/5/93--4/12/16 (tim@opencircuitdesign.com) % The Johns Hopkins University (1993-2004) % MultiGiG, Inc. (2004-2012) +% Open Circuit Design (2012-2016) % -%%BeginResource: procset XCIRCproc 3.8 0 +%%BeginResource: procset XCIRCproc 3.9 1 % % supporting definitions --- these are the primary xcircuit types. @@ -20,18 +21,18 @@ exch findfont exch makefont dup length dict /ndict exch def { 1 index /FID ne { ndict 3 1 roll put } { pop pop } ifelse } forall ndict definefont pop} def -/ul { dup type /stringtype eq showflag 1 eq and { gsave +/ul { count 0 gt { dup type /stringtype eq showflag 1 eq and { gsave currentpoint topmat setmatrix 0 0 moveto 2 index stringwidth pop (_) false charpath flattenpath pathbbox grestore exch pop 1 index sub setlinewidth exch pop currentpoint 3 -1 roll add moveto 0 - rlineto stroke moveto } if } def -/ol { dup type /stringtype eq showflag 1 eq and { gsave gsave + rlineto stroke moveto } if } if } def +/ol { count 0 gt { dup type /stringtype eq showflag 1 eq and { gsave gsave currentpoint topmat setmatrix 2 index stringwidth pop 3 index true charpath flattenpath pathbbox grestore exch pop exch pop topmat setmatrix (_) true charpath pathbbox grestore exch pop 1 index sub setlinewidth exch pop currentpoint exch 4 1 roll exch sub add moveto pop 0 rlineto stroke - moveto } if } def + moveto } if } if } def /stW { gsave currentpoint newpath moveto true charpath flattenpath pathbbox pop exch pop sub grestore } def /Ts {mark Tabs aload pop counttomark 1 add array astore /Tabs exch def Tabs @@ -52,13 +53,14 @@ 0.67 mul Kn } def /ns { 0 kY neg Kn /kY 0 def /fscale 1.0 def xfont0 1.0 cf0 } def /MR { /twidth exch def } def -/CR { ns 0 /Bline Bline fscale0 neg add def Bline moveto } def +/CRx { } def +/CR { ns 0 /Bline Bline fscale0 neg add def Bline moveto CRx } def /cf { dup type /realtype ne {1.0} if exch findfont exch kY 0 eq { 40 mul dup /fscale0 exch def cf0 /xfont0 currentfont def} {fscale0 mul fscale mul cf0} ifelse } def /ctmk { counttomark dup 2 add -1 roll pop } bind def /label { gsave translate 0 0 moveto dup scale neg - /rotval exch def /twidth 100000 def /just exch def just 384 and + /rotval exch def /twidth 100000 def /just exch def just 128 and 0 gt {/mshow {pop} def} {/mshow {show} def} ifelse just 16 and 0 gt {gsave rotval rotate 0 1 dtransform gsave pagemat setmatrix idtransform exch grestore 1 0 dtransform gsave pagemat setmatrix @@ -66,20 +68,27 @@ pop pop 0 lt} ifelse grestore {-1 /rotval rotval neg def /just just dup 3 and 1 ne {3 xor} if def} {1} ifelse exch -1e-9 lt {-1 /rotval rotval neg def /just just dup 12 and 4 ne {12 xor} if def} {1} - ifelse scale } if /showflag 0 def /fspc pspc def /Bline 0 def /Tabs - 0 array def /fscale 1.0 def /kY 0 def gsave dup 1 add copy dup - 1 0 dtransform exch atan rotate {exch dup type /stringtype eq {gsave - dup gsave newpath 0 0 moveto true charpath flattenpath pathbbox pop - exch pop exch pop grestore currentpoint pop add twidth + ifelse scale } if /showflag 0 def /fspc pspc def /Bline 0 def + /numlines 0 def /padding 0 array def /Tabs 0 array def + /fscale 1.0 def /kY 0 def gsave /CRx { linewid padding + aload pop numlines 1 add dup /numlines exch def array astore + /padding exch def /linewid 0 def } def dup 1 add copy dup 1 0 + dtransform exch atan rotate {exch dup type /stringtype eq {gsave dup + gsave newpath 0 0 moveto true charpath flattenpath pathbbox pop exch + pop exch pop grestore currentpoint pop add dup /linewid exch def twidth ge {grestore CR exch 1 add dup 2 add {CR} exch 1 roll exch} {grestore} ifelse true charpath flattenpath} {dup type /arraytype eq {exec} {12 - string cvs true charpath flattenpath} ifelse} ifelse} repeat exch pop - pathbbox grestore 3 -1 roll pop 3 1 roll just 1 and 0 gt {just 2 and + string cvs true charpath flattenpath} ifelse} ifelse} repeat + CRx /CRx {padding aload pop just 1280 and 0 gt {blockwid exch sub just + 1024 and 0 gt {0.5 mul} if} {pop 0} ifelse 0 rmoveto numlines 1 sub + dup /numlines exch def array astore /padding exch def} def exch pop + pathbbox grestore 4 copy pop exch pop exch sub /blockwid exch def + 3 -1 roll pop 3 1 roll just 1 and 0 gt {just 2 and 0 gt {exch pop neg fspc sub} {exch sub 0.5 mul neg} ifelse} {pop neg fspc add} ifelse exch Bline exch just 4 and 0 gt {just 8 and 0 gt {exch pop neg fspc sub} {add 0.5 mul neg} ifelse} {pop neg fspc add} ifelse rotval rotate Kn currentpoint translate /showflag 1 def /Bline - 0 def /Tabs 0 array def /fscale 1.0 def /kY 0 def {dup type + 0 def /Tabs 0 array def /fscale 1.0 def /kY 0 def CRx {dup type /stringtype eq {mshow} {dup type /arraytype eq {exec} {12 string cvs mshow} ifelse} ifelse} repeat grestore endclip} def /pinlabel { 4 index 32 and 0 ne hlevel 0 eq or { /pspc 10 def label diff --git a/lib/xspice.lps b/lib/xspice.lps new file mode 100644 index 0000000..90d60ac --- /dev/null +++ b/lib/xspice.lps @@ -0,0 +1,591 @@ +%! PostScript set of library objects for XCircuit +% Version: 3.9 +% Library name is: xspice +% Author: <tim@stravinsky> +% + + +% XCircuitLib library objects +/xspice::d_dff { +<</@ic (0) /@set_load (1.0e-12) /@reset_load (1.0e-12) /@clk_load (1.0e-12) /@data_load +(1.0e-12) /@reset_delay (1.0e-9) /@set_delay (1.0E-9) /@clk_delay +(1.0E-9) /@fall_delay (1.0e-9\)) /@rise_delay (1.0e-9) /@index (?) >> begingate +1 1.000 -64 64 -96 64 2 polygon +1.000 0.000 0.000 scb +(D) {/Times-Roman cf} 2 23 0.000 0.700 -96 64 pinlabel +0.180 0.545 0.341 scb +mark @index ( %%d %pD %%d %pCLK %%d %pS %%d %pC %%d %pQ %%d %pQbar d_dff_) @index +(spice1:A) {/Times-Roman cf} ctmk 20 0.000 0.700 -144 -176 infolabel +0.000 0.000 1.000 scb +mark @index (A) {/Times-Roman cf} ctmk 21 0.000 0.700 0 16 label +sce +0 1.000 -64 -64 -64 96 64 96 64 -64 4 polygon +1 1.000 64 64 96 64 2 polygon +1.000 0.000 0.000 scb +(Q) {/Times-Roman cf} 2 20 0.000 0.700 96 64 pinlabel +(CLK) {/Times-Roman cf} 2 23 0.000 0.700 -96 -32 pinlabel +sce +1 1.000 64 -32 96 -32 2 polygon +1.000 0.000 0.000 scb +(Qbar) {/Times-Roman cf} 2 20 0.000 0.700 96 -32 pinlabel +sce +(D) {/Times-Roman cf} 2 21 0.000 0.700 -48 64 label +1 1.000 -64 -48 -48 -32 -64 -16 3 polygon +(S) {/Times-Roman cf} 2 21 0.000 0.700 0 80 label +(C) {/Times-Roman cf} 2 21 0.000 0.700 0 -48 label +(Q) {/Times-Roman cf} 2 21 0.000 0.700 48 64 label +(Q) {ol} {/Times-Roman cf} 3 21 0.000 0.700 48 -32 label +1.000 0.000 0.000 scb +(C) {/Times-Roman cf} 2 29 0.000 0.700 0 -96 pinlabel +(S) {/Times-Roman cf} 2 17 0.000 0.700 0 128 pinlabel +sce +1 1.000 0 -96 0 -64 2 polygon +1 1.000 0 128 0 96 2 polygon +0.180 0.545 0.341 scb +mark @reset_load ( reset_load=) @set_load ( set_load=) @clk_load ( clk_load=) +@data_load ( data_load=) @ic (spice3:+ ic=) {/Times-Roman cf} ctmk 20 0.000 +0.700 -144 -240 infolabel +mark @fall_delay ( fall_delay=) @rise_delay (spice4:+ rise_delay=) +{/Times-Roman cf} ctmk 20 0.000 0.700 -144 -272 infolabel +mark @reset_delay ( reset_delay=) @set_delay ( set_delay=) @clk_delay +( d_dff\(clk_delay=) @index (spice2:.model d_dff_) {/Times-Roman cf} ctmk 20 +0.000 0.700 -144 -208 infolabel +sce +1 1.000 -96 -32 -64 -32 2 polygon +endgate +} def + +/xspice::adc_bridge { +<</@in_high (2.0) /@in_low (1.0) /@index (?) /@rise_delay (1.0e-9) /@fall_delay +(1.0e-9) >> begingate +1 1.000 48 0 80 0 2 polygon +1 1.000 -48 0 -80 0 2 polygon +1.000 0.000 0.000 scb +(A) {/Times-Roman cf} 2 23 0.000 0.700 -80 0 pinlabel +(D) {/Times-Roman cf} 2 20 0.000 0.700 80 0 pinlabel +0.180 0.545 0.341 scb +mark @index ( [%p"A"] %%d [%p"D"] adc_bridge_) @index (spice1:A) {/Times-Roman cf} +ctmk 20 0.000 0.700 -112 -64 infolabel +mark (\)) @fall_delay ( fall_delay=) @rise_delay ( rise_delay=) @in_high +( in_high=) @in_low ( adc_bridge\(in_low=) @index (spice2:.model adc_bridge_) +{/Times-Roman cf} ctmk 20 0.000 0.700 -112 -96 infolabel +0.000 0.000 1.000 scb +mark @index (A) {/Times-Roman cf} ctmk 21 0.000 0.700 0 0 label +sce +1 1.000 -48 0 -32 -16 32 -16 48 0 32 16 -32 16 -48 0 7 polygon +endgate +} def + +/xspice::dac_bridge { +<</@t_fall (1.0E-9) /@t_rise (1.0E-9) /@input_load (1.0E-12) /@out_undef (0.5) /@out_high +(1.0) /@out_low (0.0) /@index (?) >> begingate +1 1.000 48 0 80 0 2 polygon +1 1.000 -48 0 -80 0 2 polygon +1.000 0.000 0.000 scb +(D) {/Times-Roman cf} 2 23 0.000 0.700 -80 0 pinlabel +(A) {/Times-Roman cf} 2 20 0.000 0.700 80 0 pinlabel +0.180 0.545 0.341 scb +mark @index ( %%d [%p"D"] [%p"A"] dac_bridge_) @index (spice1:A) {/Times-Roman cf} +ctmk 20 0.000 0.700 -112 -64 infolabel +mark @out_high ( out_high=) @out_low ( dac_bridge\(out_low=) @index +(spice2:.model dac_bridge_) {/Times-Roman cf} ctmk 20 0.000 0.700 -112 -96 +infolabel +0.000 0.000 1.000 scb +mark @index (A) {/Times-Roman cf} ctmk 21 0.000 0.700 0 0 label +sce +1 1.000 -48 0 -32 -16 32 -16 48 0 32 16 -32 16 -48 0 7 polygon +0.180 0.545 0.341 scb +mark (\)) @t_fall ( t_fall=) @t_rise ( t_rise=) @input_load ( input_load=) +@out_undef (spice3:+ out_undef=) {/Times-Roman cf} ctmk 20 0.000 0.700 -112 +-128 infolabel +endgate +} def + +/xspice::d_buffer { +<</@input_load (1.0e-12) /@fall_delay (1.0e-9) /@rise_delay (1.0e-9) /@index (?) >> +begingate +1 1.000 48 0 80 0 2 polygon +1 1.000 -48 0 -80 0 2 polygon +1.000 0.000 0.000 scb +(A) {/Times-Roman cf} 2 23 0.000 0.700 -80 0 pinlabel +(X) {/Times-Roman cf} 2 20 0.000 0.700 80 0 pinlabel +0.180 0.545 0.341 scb +mark @index ( %%d %pA %%d %pX d_buffer_) @index (spice1:A) {/Times-Roman cf} ctmk +20 0.000 0.700 -112 -128 infolabel +mark (\)) @input_load ( input_load=) @fall_delay ( fall_delay=) @rise_delay +( d_buffer\(rise_delay=) @index (spice2:.model d_buffer_) {/Times-Roman cf} ctmk +20 0.000 0.700 -112 -160 infolabel +0.000 0.000 1.000 scb +mark @index (A) {/Times-Roman cf} ctmk 21 0.000 0.700 -16 0 label +sce +1 1.000 48 0 -48 48 -48 -48 48 0 4 polygon +endgate +} def + +/xspice::d_inverter { +<</@input_load (1.0e-12) /@index (?) /@rise_delay (1.0e-9) /@fall_delay (1.0e-9) >> +begingate +1 1.000 64 0 80 0 2 polygon +1 1.000 -48 0 -80 0 2 polygon +1.000 0.000 0.000 scb +(A) {/Times-Roman cf} 2 23 0.000 0.700 -80 0 pinlabel +(X) {/Times-Roman cf} 2 20 0.000 0.700 80 0 pinlabel +0.180 0.545 0.341 scb +mark @index ( %%d %pin %%d %pout d_inverter_) @index (spice1:A) {/Times-Roman cf} +ctmk 20 0.000 0.700 -112 -128 infolabel +mark (\)) @input_load ( input_load=) @fall_delay ( fall_delay=) @rise_delay +( d_inverter\(rise_delay=) @index (spice2:.model d_inverter_) {/Times-Roman cf} +ctmk 20 0.000 0.700 -112 -160 infolabel +0.000 0.000 1.000 scb +mark @index (A) {/Times-Roman cf} ctmk 21 0.000 0.700 -16 0 label +sce +1 1.000 56 0 8 0.000 360.000 xcarc +1 1.000 48 0 -48 48 -48 -48 48 0 4 polygon +endgate +} def + +/xspice::d_and2 { +<</@index (?) /@rise_delay (1.0e-9) /@fall_delay (1.0e-9) /@input_load (1.0e-12) >> +begingate +1 1.000 64 0 96 0 2 polygon +1 1.000 -48 32 -80 32 2 polygon +1.000 0.000 0.000 scb +(A) {/Times-Roman cf} 2 23 0.000 0.700 -80 32 pinlabel +(X) {/Times-Roman cf} 2 20 0.000 0.700 96 0 pinlabel +0.180 0.545 0.341 scb +mark @index ( %%d [%pA %pB] %%d %pX d_and2_) @index (spice1:A) {/Times-Roman cf} +ctmk 20 0.000 0.700 -112 -128 infolabel +mark (\)) @input_load ( input_load=) @fall_delay ( fall_delay=) @rise_delay +( d_and\(rise_delay=) @index (spice2:.model d_and2_) {/Times-Roman cf} ctmk 20 +0.000 0.700 -112 -160 infolabel +0.000 0.000 1.000 scb +mark @index (A) {/Times-Roman cf} ctmk 21 0.000 0.700 0 0 label +sce +1 1.000 -48 -48 -48 48 2 polygon +1 1.000 -48 48 16 48 2 polygon +1 1.000 -48 -48 16 -48 2 polygon +1 1.000 16 0 48 270.000 450.000 xcarc +1 1.000 -48 -32 -80 -32 2 polygon +1.000 0.000 0.000 scb +(B) {/Times-Roman cf} 2 23 0.000 0.700 -80 -32 pinlabel +endgate +} def + +/xspice::d_nand2 { +<</@input_load (1.0e-12) /@fall_delay (1.0e-9) /@rise_delay (1.0e-9) /@index (?) >> +begingate +1 1.000 80 0 96 0 2 polygon +1 1.000 -48 32 -80 32 2 polygon +1.000 0.000 0.000 scb +(A) {/Times-Roman cf} 2 23 0.000 0.700 -80 32 pinlabel +(X) {/Times-Roman cf} 2 20 0.000 0.700 96 0 pinlabel +0.180 0.545 0.341 scb +mark @index ( %%d [%pA %pB] %%d %pX d_nand2_) @index (spice1:A) {/Times-Roman cf} +ctmk 20 0.000 0.700 -112 -128 infolabel +mark (\)) @input_load ( input_load=) @fall_delay ( fall_delay=) @rise_delay +( d_nand\(rise_delay=) @index (spice2:.model d_nand2_) {/Times-Roman cf} ctmk 20 +0.000 0.700 -112 -160 infolabel +0.000 0.000 1.000 scb +mark @index (A) {/Times-Roman cf} ctmk 21 0.000 0.700 0 0 label +sce +1 1.000 -48 -48 -48 48 2 polygon +1 1.000 -48 48 16 48 2 polygon +1 1.000 -48 -48 16 -48 2 polygon +1 1.000 16 0 48 270.000 450.000 xcarc +1 1.000 -48 -32 -80 -32 2 polygon +1.000 0.000 0.000 scb +(B) {/Times-Roman cf} 2 23 0.000 0.700 -80 -32 pinlabel +sce +1 1.000 72 0 8 0.000 360.000 xcarc +endgate +} def + +/xspice::d_or2 { +<</@input_load (1.0e-12) /@fall_delay (1.0e-9) /@rise_delay (1.0e-9) /@index (?) >> +begingate +1 1.000 64 0 96 0 2 polygon +1 1.000 -40 32 -80 32 2 polygon +1.000 0.000 0.000 scb +(A) {/Times-Roman cf} 2 23 0.000 0.700 -80 32 pinlabel +(X) {/Times-Roman cf} 2 20 0.000 0.700 96 0 pinlabel +0.180 0.545 0.341 scb +mark @index ( %%d [%pA %pB] %%d %pX d_or2_) @index (spice1:A) {/Times-Roman cf} +ctmk 20 0.000 0.700 -112 -128 infolabel +mark (\)) @input_load ( input_load=) @fall_delay ( fall_delay=) @rise_delay +( d_or\(rise_delay=) @index (spice2:.model d_or2_) {/Times-Roman cf} ctmk 20 +0.000 0.700 -112 -160 infolabel +0.000 0.000 1.000 scb +mark @index (A) {/Times-Roman cf} ctmk 21 0.000 0.700 0 0 label +sce +1 1.000 -48 48 -16 48 2 polygon +1 1.000 -40 -32 -80 -32 2 polygon +1.000 0.000 0.000 scb +(B) {/Times-Roman cf} 2 23 0.000 0.700 -80 -32 pinlabel +sce +1 1.000 -32 32 -32 -32 -48 -48 -48 48 spline +1 1.000 56 24 16 48 -16 48 64 0 spline +1 1.000 56 -24 16 -48 -16 -48 64 0 spline +1 1.000 -48 -48 -16 -48 2 polygon +endgate +} def + +/xspice::d_nor2 { +<</@index (?) /@rise_delay (1.0e-9) /@fall_delay (1.0e-9) /@input_load (1.0e-12) >> +begingate +1 1.000 80 0 96 0 2 polygon +1 1.000 -40 32 -80 32 2 polygon +1.000 0.000 0.000 scb +(A) {/Times-Roman cf} 2 23 0.000 0.700 -80 32 pinlabel +(X) {/Times-Roman cf} 2 20 0.000 0.700 96 0 pinlabel +0.180 0.545 0.341 scb +mark @index ( %%d [%pA %pB] %%d %pX d_nor2_) @index (spice1:A) {/Times-Roman cf} +ctmk 20 0.000 0.700 -112 -128 infolabel +mark (\)) @input_load ( input_load=) @fall_delay ( fall_delay=) @rise_delay +( d_nor\(rise_delay=) @index (spice2:.model d_nor2_) {/Times-Roman cf} ctmk 20 +0.000 0.700 -112 -160 infolabel +0.000 0.000 1.000 scb +mark @index (A) {/Times-Roman cf} ctmk 21 0.000 0.700 0 0 label +sce +1 1.000 -48 48 -16 48 2 polygon +1 1.000 -40 -32 -80 -32 2 polygon +1.000 0.000 0.000 scb +(B) {/Times-Roman cf} 2 23 0.000 0.700 -80 -32 pinlabel +sce +1 1.000 -32 32 -32 -32 -48 -48 -48 48 spline +1 1.000 56 24 16 48 -16 48 64 0 spline +1 1.000 56 -24 16 -48 -16 -48 64 0 spline +1 1.000 -48 -48 -16 -48 2 polygon +1 1.000 72 0 8 0.000 360.000 xcarc +endgate +} def + +/xspice::d_xor2 { +<</@index (?) /@rise_delay (1.0e-9) /@fall_delay (1.0e-9) /@input_load (1.0e-12) >> +begingate +1 1.000 64 0 96 0 2 polygon +1 1.000 -48 32 -80 32 2 polygon +1.000 0.000 0.000 scb +(A) {/Times-Roman cf} 2 23 0.000 0.700 -80 32 pinlabel +(X) {/Times-Roman cf} 2 20 0.000 0.700 96 0 pinlabel +0.180 0.545 0.341 scb +mark @index ( %%d [%pA %pB] %%d %pX d_xor2_) @index (spice1:A) {/Times-Roman cf} +ctmk 20 0.000 0.700 -112 -128 infolabel +mark (\)) @input_load ( input_load=) @fall_delay ( fall_delay=) @rise_delay +( d_xor\(rise_delay=) @index (spice2:.model d_xor2_) {/Times-Roman cf} ctmk 20 +0.000 0.700 -112 -160 infolabel +0.000 0.000 1.000 scb +mark @index (A) {/Times-Roman cf} ctmk 21 0.000 0.700 0 0 label +sce +1 1.000 -44 48 -16 48 2 polygon +1 1.000 -48 -32 -80 -32 2 polygon +1.000 0.000 0.000 scb +(B) {/Times-Roman cf} 2 23 0.000 0.700 -80 -32 pinlabel +sce +1 1.000 -28 32 -28 -32 -44 -48 -44 48 spline +1 1.000 56 24 16 48 -16 48 64 0 spline +1 1.000 56 -24 16 -48 -16 -48 64 0 spline +1 1.000 -44 -48 -16 -48 2 polygon +1 1.000 -40 32 -40 -32 -56 -48 -56 48 spline +endgate +} def + +/xspice::d_xnor2 { +<</@input_load (1.0e-12) /@fall_delay (1.0e-9) /@rise_delay (1.0e-9) /@index (?) >> +begingate +1 1.000 80 0 96 0 2 polygon +1 1.000 -48 32 -80 32 2 polygon +1.000 0.000 0.000 scb +(A) {/Times-Roman cf} 2 23 0.000 0.700 -80 32 pinlabel +(X) {/Times-Roman cf} 2 20 0.000 0.700 96 0 pinlabel +0.180 0.545 0.341 scb +mark @index ( %%d [%pA %pB] %%d %pX d_xnor2_) @index (spice1:A) {/Times-Roman cf} +ctmk 20 0.000 0.700 -112 -128 infolabel +mark (\)) @input_load ( input_load=) @fall_delay ( fall_delay=) @rise_delay +( d_xnor\(rise_delay=) @index (spice2:.model d_xnor2_) {/Times-Roman cf} ctmk 20 +0.000 0.700 -112 -160 infolabel +0.000 0.000 1.000 scb +mark @index (A) {/Times-Roman cf} ctmk 21 0.000 0.700 0 0 label +sce +1 1.000 -44 48 -16 48 2 polygon +1 1.000 -48 -32 -80 -32 2 polygon +1.000 0.000 0.000 scb +(B) {/Times-Roman cf} 2 23 0.000 0.700 -80 -32 pinlabel +sce +1 1.000 -28 32 -28 -32 -44 -48 -44 48 spline +1 1.000 56 24 16 48 -16 48 64 0 spline +1 1.000 56 -24 16 -48 -16 -48 64 0 spline +1 1.000 -44 -48 -16 -48 2 polygon +1 1.000 -40 32 -40 -32 -56 -48 -56 48 spline +1 1.000 72 0 8 0.000 360.000 xcarc +endgate +} def + +/xspice::d_tristate { +<</@enable_load (1.0E-12) /@delay (1.0E-9) /@index (?) /@input_load (1.0e-12) >> begingate +1 1.000 48 0 80 0 2 polygon +1 1.000 -48 0 -80 0 2 polygon +1.000 0.000 0.000 scb +(A) {/Times-Roman cf} 2 23 0.000 0.700 -80 0 pinlabel +(X) {/Times-Roman cf} 2 20 0.000 0.700 80 0 pinlabel +0.180 0.545 0.341 scb +mark @index ( %%d %pA %%d %pEN %%d %pX d_tristate_) @index (spice1:A) +{/Times-Roman cf} ctmk 20 0.000 0.700 -112 -128 infolabel +mark (\)) @enable_load ( enable_load=) @input_load ( input_load=) @delay +( d_tristate\(delay=) @index (spice2:.model d_tristate_) {/Times-Roman cf} ctmk +20 0.000 0.700 -112 -160 infolabel +0.000 0.000 1.000 scb +mark @index (A) {/Times-Roman cf} ctmk 21 0.000 0.700 -16 0 label +sce +1 1.000 48 0 -48 48 -48 -48 48 0 4 polygon +1 1.000 0 -24 0 -48 2 polygon +1.000 0.000 0.000 scb +(EN) {/Times-Roman cf} 2 29 0.000 0.700 0 -48 pinlabel +endgate +} def + +/xspice::d_pullup { +<</@load (1.0e-12) /@index (?) >> begingate +1.000 0.000 0.000 scb +(X) {/Times-Roman cf} 2 29 0.000 0.700 32 0 pinlabel +0.180 0.545 0.341 scb +mark @index ( %%d %pA %%d %pX d_pullup_) @index (spice1:A) {/Times-Roman cf} ctmk +20 0.000 0.700 -120 -40 infolabel +mark (\)) @load ( d_pullup\(load=) @index (spice2:.model d_pullup_) +{/Times-Roman cf} ctmk 20 0.000 0.700 -120 -72 infolabel +0.000 0.000 1.000 scb +mark @index (A) {/Times-Roman cf} ctmk 20 0.000 0.700 64 64 label +sce +1 1.000 32 128 32 100 2 polygon +1 1.000 32 0 32 28 2 polygon +1 1.000 32 28 46 34 18 46 46 58 18 70 46 82 18 94 32 100 8 polygon +1 1.000 0 128 64 128 2 polygon +(Vdd) {/Times-Roman cf} 2 17 0.000 0.700 32 136 label +endgate +} def + +/xspice::d_pulldown { +<</@index (?) /@load (1.0e-12) >> begingate +1.000 0.000 0.000 scb +(X) {/Times-Roman cf} 2 17 0.000 0.700 32 160 pinlabel +0.180 0.545 0.341 scb +mark @index ( %%d %pA %%d %pX d_pulldown_) @index (spice1:A) {/Times-Roman cf} ctmk +20 0.000 0.700 -224 -32 infolabel +mark (\)) @load ( d_pulldown\(load=) @index (spice2:.model d_pulldown_) +{/Times-Roman cf} ctmk 20 0.000 0.700 -224 -64 infolabel +0.000 0.000 1.000 scb +mark @index (A) {/Times-Roman cf} ctmk 20 0.000 0.700 64 96 label +sce +1 1.000 32 160 32 132 2 polygon +1 1.000 32 32 32 60 2 polygon +1 1.000 32 60 46 66 18 78 46 90 18 102 46 114 18 126 32 132 8 polygon +1 1.000 0 32 64 32 2 polygon +1 1.000 12 20 52 20 2 polygon +1 1.000 24 8 40 8 2 polygon +endgate +} def + +/xspice::d_latch { +<</@fall_delay (1.0e-9) /@rise_delay (1.0e-9) /@enable_load (1.0e-12) /@enable_delay +(1.0e-9) /@data_delay (1.0e-9) /@index (?) /@set_delay (1.0E-9) /@reset_delay +(1.0e-9) /@data_load (1.0e-12) /@reset_load (1.0e-12) /@set_load +(1.0e-12) /@ic (0) >> begingate +1 1.000 -64 64 -96 64 2 polygon +1.000 0.000 0.000 scb +(D) {/Times-Roman cf} 2 23 0.000 0.700 -96 64 pinlabel +0.180 0.545 0.341 scb +mark @index ( %%d %pD %%d %pEN %%d %pS %%d %pC %%d %pQ %%d %pQbar d_latch_) @index +(spice1:A) {/Times-Roman cf} ctmk 20 0.000 0.700 -144 -176 infolabel +0.000 0.000 1.000 scb +mark @index (A) {/Times-Roman cf} ctmk 21 0.000 0.700 0 16 label +sce +0 1.000 -64 -64 -64 96 64 96 64 -64 4 polygon +1 1.000 64 64 96 64 2 polygon +1.000 0.000 0.000 scb +(Q) {/Times-Roman cf} 2 20 0.000 0.700 96 64 pinlabel +(EN) {/Times-Roman cf} 2 23 0.000 0.700 -96 -32 pinlabel +sce +1 1.000 64 -32 96 -32 2 polygon +1.000 0.000 0.000 scb +(Qbar) {/Times-Roman cf} 2 20 0.000 0.700 96 -32 pinlabel +sce +(D) {/Times-Roman cf} 2 21 0.000 0.700 -48 64 label +(S) {/Times-Roman cf} 2 21 0.000 0.700 0 80 label +(C) {/Times-Roman cf} 2 21 0.000 0.700 0 -48 label +(Q) {/Times-Roman cf} 2 21 0.000 0.700 48 64 label +(Q) {ol} {/Times-Roman cf} 3 21 0.000 0.700 48 -32 label +1.000 0.000 0.000 scb +(C) {/Times-Roman cf} 2 29 0.000 0.700 0 -96 pinlabel +(S) {/Times-Roman cf} 2 17 0.000 0.700 0 128 pinlabel +sce +1 1.000 0 -96 0 -64 2 polygon +1 1.000 0 128 0 96 2 polygon +0.180 0.545 0.341 scb +mark @reset_load ( reset_load=) @set_load ( set_load=) @enable_load +( enable_load=) @data_load ( data_load=) @ic (spice3:+ ic=) {/Times-Roman cf} +ctmk 20 0.000 0.700 -144 -240 infolabel +mark (\)) @fall_delay ( fall_delay=) @rise_delay (spice4:+ rise_delay=) +{/Times-Roman cf} ctmk 20 0.000 0.700 -144 -272 infolabel +mark @reset_delay ( reset_delay=) @set_delay ( set_delay=) @enable_delay +( d_latch\(enable_delay=) @index (spice2:.model d_latch_) {/Times-Roman cf} ctmk +20 0.000 0.700 -144 -208 infolabel +sce +1 1.000 -96 -32 -64 -32 2 polygon +(EN) {/Times-Roman cf} 2 20 0.000 0.700 -56 -32 label +endgate +} def + +/xspice::d_ram_8x1k { +<</@address_load (1.0e-12) /@select_load (1.0E-12) /@read_delay (100.0E-9) /@select_value +(1) /@ic (0) /@data_load (1.0e-12) /@index (?) /@enable_load +(1.0e-12) >> begingate +0.000 0.000 1.000 scb +mark @index (A) {/Times-Roman cf} ctmk 21 0.000 0.700 224 96 label +sce +0 1.000 -64 -64 -64 224 544 224 544 -64 4 polygon +1.000 0.000 0.000 scb +(D7) {/Times-Roman cf} 2 23 0.000 0.700 -96 -32 pinlabel +sce +1 1.000 -96 -32 -64 -32 2 polygon +(D7) {/Times-Roman cf} 2 20 0.000 0.700 -56 -32 label +1.000 0.000 0.000 scb +(D6) {/Times-Roman cf} 2 23 0.000 0.700 -96 0 pinlabel +sce +1 1.000 -96 0 -64 0 2 polygon +(D6) {/Times-Roman cf} 2 20 0.000 0.700 -56 0 label +1.000 0.000 0.000 scb +(D5) {/Times-Roman cf} 2 23 0.000 0.700 -96 32 pinlabel +sce +1 1.000 -96 32 -64 32 2 polygon +(D5) {/Times-Roman cf} 2 20 0.000 0.700 -56 32 label +1.000 0.000 0.000 scb +(D4) {/Times-Roman cf} 2 23 0.000 0.700 -96 64 pinlabel +sce +1 1.000 -96 64 -64 64 2 polygon +(D4) {/Times-Roman cf} 2 20 0.000 0.700 -56 64 label +1.000 0.000 0.000 scb +(D3) {/Times-Roman cf} 2 23 0.000 0.700 -96 96 pinlabel +sce +1 1.000 -96 96 -64 96 2 polygon +(D3) {/Times-Roman cf} 2 20 0.000 0.700 -56 96 label +1.000 0.000 0.000 scb +(D2) {/Times-Roman cf} 2 23 0.000 0.700 -96 128 pinlabel +sce +1 1.000 -96 128 -64 128 2 polygon +(D2) {/Times-Roman cf} 2 20 0.000 0.700 -56 128 label +1.000 0.000 0.000 scb +(D1) {/Times-Roman cf} 2 23 0.000 0.700 -96 160 pinlabel +sce +1 1.000 -96 160 -64 160 2 polygon +(D1) {/Times-Roman cf} 2 20 0.000 0.700 -56 160 label +1.000 0.000 0.000 scb +(D0) {/Times-Roman cf} 2 23 0.000 0.700 -96 192 pinlabel +sce +1 1.000 -96 192 -64 192 2 polygon +(D0) {/Times-Roman cf} 2 20 0.000 0.700 -56 192 label +1.000 0.000 0.000 scb +(Q7) {/Times-Roman cf} 2 20 0.000 0.700 576 -32 pinlabel +sce +1 1.000 576 -32 544 -32 2 polygon +(Q7) {/Times-Roman cf} 2 23 0.000 0.700 536 -32 label +1.000 0.000 0.000 scb +(Q6) {/Times-Roman cf} 2 20 0.000 0.700 576 0 pinlabel +sce +1 1.000 576 0 544 0 2 polygon +(Q6) {/Times-Roman cf} 2 23 0.000 0.700 536 0 label +1.000 0.000 0.000 scb +(Q5) {/Times-Roman cf} 2 20 0.000 0.700 576 32 pinlabel +sce +1 1.000 576 32 544 32 2 polygon +(Q5) {/Times-Roman cf} 2 23 0.000 0.700 536 32 label +1.000 0.000 0.000 scb +(Q4) {/Times-Roman cf} 2 20 0.000 0.700 576 64 pinlabel +sce +1 1.000 576 64 544 64 2 polygon +(Q4) {/Times-Roman cf} 2 23 0.000 0.700 536 64 label +1.000 0.000 0.000 scb +(Q3) {/Times-Roman cf} 2 20 0.000 0.700 576 96 pinlabel +sce +1 1.000 576 96 544 96 2 polygon +(Q3) {/Times-Roman cf} 2 23 0.000 0.700 536 96 label +1.000 0.000 0.000 scb +(Q2) {/Times-Roman cf} 2 20 0.000 0.700 576 128 pinlabel +sce +1 1.000 576 128 544 128 2 polygon +(Q2) {/Times-Roman cf} 2 23 0.000 0.700 536 128 label +1.000 0.000 0.000 scb +(Q1) {/Times-Roman cf} 2 20 0.000 0.700 576 160 pinlabel +sce +1 1.000 576 160 544 160 2 polygon +(Q1) {/Times-Roman cf} 2 23 0.000 0.700 536 160 label +1.000 0.000 0.000 scb +(Q0) {/Times-Roman cf} 2 20 0.000 0.700 576 192 pinlabel +sce +1 1.000 576 192 544 192 2 polygon +(Q0) {/Times-Roman cf} 2 23 0.000 0.700 536 192 label +1 1.000 368 -64 368 -96 2 polygon +1 1.000 416 -64 416 -96 2 polygon +1 1.000 464 -64 464 -96 2 polygon +1.000 0.000 0.000 scb +(A2) {/Times-Roman cf} 2 29 0.000 0.700 368 -96 pinlabel +(A1) {/Times-Roman cf} 2 29 0.000 0.700 416 -96 pinlabel +(A0) {/Times-Roman cf} 2 29 0.000 0.700 464 -96 pinlabel +sce +1 1.000 320 -64 320 -96 2 polygon +1.000 0.000 0.000 scb +(A3) {/Times-Roman cf} 2 29 0.000 0.700 320 -96 pinlabel +sce +1 1.000 272 -64 272 -96 2 polygon +1.000 0.000 0.000 scb +(A4) {/Times-Roman cf} 2 29 0.000 0.700 272 -96 pinlabel +sce +1 1.000 224 -64 224 -96 2 polygon +1.000 0.000 0.000 scb +(A5) {/Times-Roman cf} 2 29 0.000 0.700 224 -96 pinlabel +sce +1 1.000 176 -64 176 -96 2 polygon +1.000 0.000 0.000 scb +(A6) {/Times-Roman cf} 2 29 0.000 0.700 176 -96 pinlabel +sce +1 1.000 128 -64 128 -96 2 polygon +1.000 0.000 0.000 scb +(A7) {/Times-Roman cf} 2 29 0.000 0.700 128 -96 pinlabel +sce +1 1.000 80 -64 80 -96 2 polygon +1.000 0.000 0.000 scb +(A8) {/Times-Roman cf} 2 29 0.000 0.700 80 -96 pinlabel +sce +1 1.000 32 -64 32 -96 2 polygon +1.000 0.000 0.000 scb +(A9) {/Times-Roman cf} 2 29 0.000 0.700 32 -96 pinlabel +sce +(A9) {/Times-Roman cf} 2 17 0.000 0.700 32 -48 label +(A8) {/Times-Roman cf} 2 17 0.000 0.700 80 -48 label +(A7) {/Times-Roman cf} 2 17 0.000 0.700 128 -48 label +(A6) {/Times-Roman cf} 2 17 0.000 0.700 176 -48 label +(A5) {/Times-Roman cf} 2 17 0.000 0.700 224 -48 label +(A4) {/Times-Roman cf} 2 17 0.000 0.700 272 -48 label +(A3) {/Times-Roman cf} 2 17 0.000 0.700 320 -48 label +(A2) {/Times-Roman cf} 2 17 0.000 0.700 368 -48 label +(A1) {/Times-Roman cf} 2 17 0.000 0.700 416 -48 label +(A0) {/Times-Roman cf} 2 17 0.000 0.700 464 -48 label +(SRAM 1k x 8) {/Times-Roman cf} 2 21 0.000 0.700 224 48 label +0.180 0.545 0.341 scb +mark ( %%d [ %pD7 %pD6 %pD5 %pD4 %pD3 %pD2 %pD1 %pD0 ]) @index (spice1:A) +{/Times-Roman cf} ctmk 20 0.000 0.700 -144 -192 infolabel +(spice2:+ %%d [ %pQ7 %pQ6 %pQ5 %pQ4 %pQ3 %pQ2 %pQ1 %pQ0 ]) {/Times-Roman cf} 2 +20 0.000 0.700 -144 -224 infolabel +(spice3:+ %%d [ %pA9 %pA8 %pA7 %pA6 %pA5 %pA4 %pA3 %pA2 %pA1 %pA0 ]) +{/Times-Roman cf} 2 20 0.000 0.700 -144 -256 infolabel +mark @index (spice4:+ d_ram_8x1k) {/Times-Roman cf} ctmk 20 0.000 0.700 -144 -288 +infolabel +mark @read_delay ( read_delay=) @ic ( ic=) @select_value +( d_ram\(select_value=) @index (spice5:.model d_ram_8x1k) {/Times-Roman cf} ctmk +20 0.000 0.700 -144 -320 infolabel +mark (\)) @enable_load ( enable_load=) @select_load ( select_load=) +@address_load ( address_load=) @data_load (spice6:+ data_load=) +{/Times-Roman cf} ctmk 20 0.000 0.700 -144 -352 infolabel +endgate +} def + + +% EndLib |