summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorRuben Undheim <ruben.undheim@gmail.com>2018-10-20 17:54:32 +0200
committerRuben Undheim <ruben.undheim@gmail.com>2018-10-20 17:54:32 +0200
commitca2442640f4394296d9d6b0c42d41d399dbf9667 (patch)
tree879c0a6065d6982d5a82b35dc3ff67299e2ea7d9 /lib
parent04d5d0ea0f65a434e568fe031f6396caec9b3a8d (diff)
New upstream version 3.9.73+dfsg.1
Diffstat (limited to 'lib')
-rw-r--r--lib/analoglib3.lps229
-rw-r--r--lib/cyrillic.enc39
-rw-r--r--lib/digitaltcl.lps14
-rw-r--r--lib/fonts/courier_cyrillic.xfe50
-rw-r--r--lib/fonts/helvetica_cyrillic.xfe50
-rw-r--r--lib/fonts/testtest.ps206
-rw-r--r--lib/fonts/times_roman_cyrillic.xfe51
-rw-r--r--lib/isolatin2.enc39
-rw-r--r--lib/isolatin5.enc40
-rw-r--r--lib/tcl/bparams.tcl2
-rw-r--r--lib/tcl/edif.tcl38
-rw-r--r--lib/tcl/files.tcl1
-rw-r--r--lib/tcl/mousehint.tcl23
-rw-r--r--lib/tcl/resource.tcl166
-rw-r--r--lib/tcl/symbol.tcl126
-rw-r--r--lib/tcl/text.tcl1
-rwxr-xr-xlib/tcl/tkcon.tcl6
-rw-r--r--lib/tcl/wrapper.tcl488
-rwxr-xr-xlib/tcl/xcircuit.tcl.in2
-rw-r--r--lib/tcl/xcstartup.tcl20
-rw-r--r--lib/xcircps2.pro43
-rw-r--r--lib/xspice.lps591
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