summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoland Stigge <stigge@antcom.de>2016-01-14 22:14:05 +0100
committerRoland Stigge <stigge@antcom.de>2016-01-14 22:14:05 +0100
commit26219f91052900ef231e07eed20744fbc2b2efda (patch)
treecb46e8cd0ecbdbc6f70ff523dae980af3a10856f
Import xcircuit_3.8.78.dfsg.orig-tutorial.tar.gz
[dgit import orig xcircuit_3.8.78.dfsg.orig-tutorial.tar.gz]
-rw-r--r--footnote.html27
-rw-r--r--giffiles/aggregate.gifbin0 -> 5614 bytes
-rw-r--r--giffiles/alib.gifbin0 -> 3730 bytes
-rw-r--r--giffiles/amp1.gifbin0 -> 7855 bytes
-rw-r--r--giffiles/amp2.gifbin0 -> 7628 bytes
-rw-r--r--giffiles/amp3.gifbin0 -> 8405 bytes
-rw-r--r--giffiles/arcs1.gifbin0 -> 4993 bytes
-rw-r--r--giffiles/bridge.gifbin0 -> 14903 bytes
-rw-r--r--giffiles/bridge1.gifbin0 -> 4576 bytes
-rw-r--r--giffiles/bridge2.gifbin0 -> 3455 bytes
-rw-r--r--giffiles/bridge3.gifbin0 -> 3988 bytes
-rw-r--r--giffiles/bridge4.gifbin0 -> 8685 bytes
-rw-r--r--giffiles/bridge5.gifbin0 -> 14752 bytes
-rw-r--r--giffiles/bridge6.gifbin0 -> 13742 bytes
-rw-r--r--giffiles/dff.gifbin0 -> 14834 bytes
-rw-r--r--giffiles/filter1.gifbin0 -> 4844 bytes
-rw-r--r--giffiles/filter2.gifbin0 -> 4901 bytes
-rw-r--r--giffiles/fullamp.gifbin0 -> 15951 bytes
-rw-r--r--giffiles/fullamp_anno.gifbin0 -> 24174 bytes
-rw-r--r--giffiles/halfamp.gifbin0 -> 10330 bytes
-rw-r--r--giffiles/integrate1.gifbin0 -> 4826 bytes
-rw-r--r--giffiles/lib1.gifbin0 -> 1936 bytes
-rw-r--r--giffiles/load1.gifbin0 -> 4431 bytes
-rw-r--r--giffiles/nand4.gifbin0 -> 3934 bytes
-rw-r--r--giffiles/object.gifbin0 -> 2378 bytes
-rw-r--r--giffiles/objedit.gifbin0 -> 5098 bytes
-rw-r--r--giffiles/overunder.gifbin0 -> 1932 bytes
-rw-r--r--giffiles/path1.gifbin0 -> 3039 bytes
-rw-r--r--giffiles/path2.gifbin0 -> 4081 bytes
-rw-r--r--giffiles/path3.gifbin0 -> 5723 bytes
-rw-r--r--giffiles/path4.gifbin0 -> 5181 bytes
-rw-r--r--giffiles/path5.gifbin0 -> 3989 bytes
-rw-r--r--giffiles/pcbcap.gifbin0 -> 14607 bytes
-rw-r--r--giffiles/pcbdiode.gifbin0 -> 3802 bytes
-rw-r--r--giffiles/poly1.gifbin0 -> 2023 bytes
-rw-r--r--giffiles/poly2.gifbin0 -> 7834 bytes
-rw-r--r--giffiles/powersup.gifbin0 -> 5191 bytes
-rw-r--r--giffiles/powersup2.gifbin0 -> 6193 bytes
-rw-r--r--giffiles/quadparts.gifbin0 -> 3461 bytes
-rw-r--r--giffiles/save1.gifbin0 -> 5436 bytes
-rw-r--r--giffiles/save2.gifbin0 -> 4492 bytes
-rw-r--r--giffiles/select1.gifbin0 -> 1280 bytes
-rw-r--r--giffiles/select2.gifbin0 -> 697 bytes
-rw-r--r--giffiles/spline1.gifbin0 -> 915 bytes
-rw-r--r--giffiles/spline2.gifbin0 -> 1747 bytes
-rw-r--r--giffiles/spline3.gifbin0 -> 3888 bytes
-rw-r--r--giffiles/symbol_enc.gifbin0 -> 17439 bytes
-rw-r--r--giffiles/text.gifbin0 -> 1725 bytes
-rw-r--r--giffiles/text2.gifbin0 -> 3437 bytes
-rw-r--r--giffiles/tut1.gifbin0 -> 14286 bytes
-rw-r--r--giffiles/wramp1.gifbin0 -> 7342 bytes
l---------index.html1
-rw-r--r--netfiles/filter.spc6
-rw-r--r--netfiles/integrator.spc17
-rw-r--r--pcb/FlareLED.ps720
-rwxr-xr-xpcb/LED1794
-rwxr-xr-xpcb/LED.NET47
-rw-r--r--pcb/bridge.pcb6
-rw-r--r--pcb/flare_objects.gifbin0 -> 15281 bytes
-rw-r--r--pcb/pic_instance.gifbin0 -> 18944 bytes
-rw-r--r--pcb/pic_object.gifbin0 -> 19324 bytes
-rw-r--r--pcb/powersup.pcb10
-rw-r--r--psfiles/analoglib1.lps238
-rw-r--r--psfiles/analoglib2.lps235
-rw-r--r--psfiles/bridge.ps370
-rw-r--r--psfiles/buses.ps245
-rw-r--r--psfiles/dff.ps228
-rw-r--r--psfiles/filter.ps260
-rw-r--r--psfiles/integrator.ps327
-rw-r--r--psfiles/powersup.ps429
-rw-r--r--psfiles/test1.ps154
-rw-r--r--tutorial.html803
-rw-r--r--tutorial2.html1455
73 files changed, 7372 insertions, 0 deletions
diff --git a/footnote.html b/footnote.html
new file mode 100644
index 0000000..0e20367
--- /dev/null
+++ b/footnote.html
@@ -0,0 +1,27 @@
+<HTML>
+<TITLE>A footnote about the "mu" character in LaTeX</TITLE>
+<BODY BACKGROUND=../giffiles/blpaper.gif>
+
+It just so happens that although the "mu"
+character is encoded into the Adobe fonts, but is not part of any of the
+TeX fonts or TeX font encodings of standard Adobe (or TrueType) fonts.
+However, it is not strictly true that printing the character is impossible.
+I, being the enterprising character that I am, have found a (somewhat
+kludgy) workaround:
+
+<OL>
+ <LI> First, you must be using one of the PSNFSS packages available under
+ LaTeX2e, such as "times" (<TT>\usepackage{times}</TT>)
+ <LI> Next, create the following definition:<BR>
+ <TT>\def\micro{\special{ps:()show}\nobreak\hspace*{0.55em}}</TT><BR>
+ (The "mu" character here is the embedded 8-bit character encoding
+ hex 0xb5, or decimal 181, or octal 0625).
+ <LI> The <TT>\micro</TT> definition can be used as follows, for example:<BR>
+ <TT>The correlator measures 700\,{\micro}m $\times$ 1170\,{\micro}m</TT>
+ <LI> This definition of <TT>\micro</TT> uses a \special{} function defined only
+ by (as far as I know) <TT>dvips</TT>, so the proper symbol will only show
+ up after postprocessing the <TT>.dvi</TT> file through <TT>dvips</TT>.
+</OL>
+
+</BODY>
+</HTML>
diff --git a/giffiles/aggregate.gif b/giffiles/aggregate.gif
new file mode 100644
index 0000000..371b19f
--- /dev/null
+++ b/giffiles/aggregate.gif
Binary files differ
diff --git a/giffiles/alib.gif b/giffiles/alib.gif
new file mode 100644
index 0000000..865dc2d
--- /dev/null
+++ b/giffiles/alib.gif
Binary files differ
diff --git a/giffiles/amp1.gif b/giffiles/amp1.gif
new file mode 100644
index 0000000..d022255
--- /dev/null
+++ b/giffiles/amp1.gif
Binary files differ
diff --git a/giffiles/amp2.gif b/giffiles/amp2.gif
new file mode 100644
index 0000000..5606af0
--- /dev/null
+++ b/giffiles/amp2.gif
Binary files differ
diff --git a/giffiles/amp3.gif b/giffiles/amp3.gif
new file mode 100644
index 0000000..c9fcd8f
--- /dev/null
+++ b/giffiles/amp3.gif
Binary files differ
diff --git a/giffiles/arcs1.gif b/giffiles/arcs1.gif
new file mode 100644
index 0000000..09db235
--- /dev/null
+++ b/giffiles/arcs1.gif
Binary files differ
diff --git a/giffiles/bridge.gif b/giffiles/bridge.gif
new file mode 100644
index 0000000..ac18bbc
--- /dev/null
+++ b/giffiles/bridge.gif
Binary files differ
diff --git a/giffiles/bridge1.gif b/giffiles/bridge1.gif
new file mode 100644
index 0000000..da964e2
--- /dev/null
+++ b/giffiles/bridge1.gif
Binary files differ
diff --git a/giffiles/bridge2.gif b/giffiles/bridge2.gif
new file mode 100644
index 0000000..53ea047
--- /dev/null
+++ b/giffiles/bridge2.gif
Binary files differ
diff --git a/giffiles/bridge3.gif b/giffiles/bridge3.gif
new file mode 100644
index 0000000..d0bcd2c
--- /dev/null
+++ b/giffiles/bridge3.gif
Binary files differ
diff --git a/giffiles/bridge4.gif b/giffiles/bridge4.gif
new file mode 100644
index 0000000..3439f07
--- /dev/null
+++ b/giffiles/bridge4.gif
Binary files differ
diff --git a/giffiles/bridge5.gif b/giffiles/bridge5.gif
new file mode 100644
index 0000000..668ae54
--- /dev/null
+++ b/giffiles/bridge5.gif
Binary files differ
diff --git a/giffiles/bridge6.gif b/giffiles/bridge6.gif
new file mode 100644
index 0000000..3aafac5
--- /dev/null
+++ b/giffiles/bridge6.gif
Binary files differ
diff --git a/giffiles/dff.gif b/giffiles/dff.gif
new file mode 100644
index 0000000..6260fba
--- /dev/null
+++ b/giffiles/dff.gif
Binary files differ
diff --git a/giffiles/filter1.gif b/giffiles/filter1.gif
new file mode 100644
index 0000000..3529749
--- /dev/null
+++ b/giffiles/filter1.gif
Binary files differ
diff --git a/giffiles/filter2.gif b/giffiles/filter2.gif
new file mode 100644
index 0000000..57d2733
--- /dev/null
+++ b/giffiles/filter2.gif
Binary files differ
diff --git a/giffiles/fullamp.gif b/giffiles/fullamp.gif
new file mode 100644
index 0000000..a2efe6b
--- /dev/null
+++ b/giffiles/fullamp.gif
Binary files differ
diff --git a/giffiles/fullamp_anno.gif b/giffiles/fullamp_anno.gif
new file mode 100644
index 0000000..db0f63a
--- /dev/null
+++ b/giffiles/fullamp_anno.gif
Binary files differ
diff --git a/giffiles/halfamp.gif b/giffiles/halfamp.gif
new file mode 100644
index 0000000..63ca65e
--- /dev/null
+++ b/giffiles/halfamp.gif
Binary files differ
diff --git a/giffiles/integrate1.gif b/giffiles/integrate1.gif
new file mode 100644
index 0000000..f77b941
--- /dev/null
+++ b/giffiles/integrate1.gif
Binary files differ
diff --git a/giffiles/lib1.gif b/giffiles/lib1.gif
new file mode 100644
index 0000000..06f4483
--- /dev/null
+++ b/giffiles/lib1.gif
Binary files differ
diff --git a/giffiles/load1.gif b/giffiles/load1.gif
new file mode 100644
index 0000000..76fc7eb
--- /dev/null
+++ b/giffiles/load1.gif
Binary files differ
diff --git a/giffiles/nand4.gif b/giffiles/nand4.gif
new file mode 100644
index 0000000..56292a5
--- /dev/null
+++ b/giffiles/nand4.gif
Binary files differ
diff --git a/giffiles/object.gif b/giffiles/object.gif
new file mode 100644
index 0000000..f783581
--- /dev/null
+++ b/giffiles/object.gif
Binary files differ
diff --git a/giffiles/objedit.gif b/giffiles/objedit.gif
new file mode 100644
index 0000000..3318d19
--- /dev/null
+++ b/giffiles/objedit.gif
Binary files differ
diff --git a/giffiles/overunder.gif b/giffiles/overunder.gif
new file mode 100644
index 0000000..f1fce9b
--- /dev/null
+++ b/giffiles/overunder.gif
Binary files differ
diff --git a/giffiles/path1.gif b/giffiles/path1.gif
new file mode 100644
index 0000000..11c6a1e
--- /dev/null
+++ b/giffiles/path1.gif
Binary files differ
diff --git a/giffiles/path2.gif b/giffiles/path2.gif
new file mode 100644
index 0000000..384c37f
--- /dev/null
+++ b/giffiles/path2.gif
Binary files differ
diff --git a/giffiles/path3.gif b/giffiles/path3.gif
new file mode 100644
index 0000000..3dc0213
--- /dev/null
+++ b/giffiles/path3.gif
Binary files differ
diff --git a/giffiles/path4.gif b/giffiles/path4.gif
new file mode 100644
index 0000000..34671ba
--- /dev/null
+++ b/giffiles/path4.gif
Binary files differ
diff --git a/giffiles/path5.gif b/giffiles/path5.gif
new file mode 100644
index 0000000..326a015
--- /dev/null
+++ b/giffiles/path5.gif
Binary files differ
diff --git a/giffiles/pcbcap.gif b/giffiles/pcbcap.gif
new file mode 100644
index 0000000..69bbd8c
--- /dev/null
+++ b/giffiles/pcbcap.gif
Binary files differ
diff --git a/giffiles/pcbdiode.gif b/giffiles/pcbdiode.gif
new file mode 100644
index 0000000..0906f88
--- /dev/null
+++ b/giffiles/pcbdiode.gif
Binary files differ
diff --git a/giffiles/poly1.gif b/giffiles/poly1.gif
new file mode 100644
index 0000000..360f400
--- /dev/null
+++ b/giffiles/poly1.gif
Binary files differ
diff --git a/giffiles/poly2.gif b/giffiles/poly2.gif
new file mode 100644
index 0000000..b58ea3c
--- /dev/null
+++ b/giffiles/poly2.gif
Binary files differ
diff --git a/giffiles/powersup.gif b/giffiles/powersup.gif
new file mode 100644
index 0000000..68a9576
--- /dev/null
+++ b/giffiles/powersup.gif
Binary files differ
diff --git a/giffiles/powersup2.gif b/giffiles/powersup2.gif
new file mode 100644
index 0000000..d00e6eb
--- /dev/null
+++ b/giffiles/powersup2.gif
Binary files differ
diff --git a/giffiles/quadparts.gif b/giffiles/quadparts.gif
new file mode 100644
index 0000000..0be0e22
--- /dev/null
+++ b/giffiles/quadparts.gif
Binary files differ
diff --git a/giffiles/save1.gif b/giffiles/save1.gif
new file mode 100644
index 0000000..c98500e
--- /dev/null
+++ b/giffiles/save1.gif
Binary files differ
diff --git a/giffiles/save2.gif b/giffiles/save2.gif
new file mode 100644
index 0000000..d947ad6
--- /dev/null
+++ b/giffiles/save2.gif
Binary files differ
diff --git a/giffiles/select1.gif b/giffiles/select1.gif
new file mode 100644
index 0000000..dfc319e
--- /dev/null
+++ b/giffiles/select1.gif
Binary files differ
diff --git a/giffiles/select2.gif b/giffiles/select2.gif
new file mode 100644
index 0000000..26d255d
--- /dev/null
+++ b/giffiles/select2.gif
Binary files differ
diff --git a/giffiles/spline1.gif b/giffiles/spline1.gif
new file mode 100644
index 0000000..0f6368a
--- /dev/null
+++ b/giffiles/spline1.gif
Binary files differ
diff --git a/giffiles/spline2.gif b/giffiles/spline2.gif
new file mode 100644
index 0000000..25c1264
--- /dev/null
+++ b/giffiles/spline2.gif
Binary files differ
diff --git a/giffiles/spline3.gif b/giffiles/spline3.gif
new file mode 100644
index 0000000..01df61f
--- /dev/null
+++ b/giffiles/spline3.gif
Binary files differ
diff --git a/giffiles/symbol_enc.gif b/giffiles/symbol_enc.gif
new file mode 100644
index 0000000..934bfdb
--- /dev/null
+++ b/giffiles/symbol_enc.gif
Binary files differ
diff --git a/giffiles/text.gif b/giffiles/text.gif
new file mode 100644
index 0000000..0939c71
--- /dev/null
+++ b/giffiles/text.gif
Binary files differ
diff --git a/giffiles/text2.gif b/giffiles/text2.gif
new file mode 100644
index 0000000..e988e64
--- /dev/null
+++ b/giffiles/text2.gif
Binary files differ
diff --git a/giffiles/tut1.gif b/giffiles/tut1.gif
new file mode 100644
index 0000000..d664463
--- /dev/null
+++ b/giffiles/tut1.gif
Binary files differ
diff --git a/giffiles/wramp1.gif b/giffiles/wramp1.gif
new file mode 100644
index 0000000..7e57adb
--- /dev/null
+++ b/giffiles/wramp1.gif
Binary files differ
diff --git a/index.html b/index.html
new file mode 120000
index 0000000..1808037
--- /dev/null
+++ b/index.html
@@ -0,0 +1 @@
+tutorial.html \ No newline at end of file
diff --git a/netfiles/filter.spc b/netfiles/filter.spc
new file mode 100644
index 0000000..394b0b0
--- /dev/null
+++ b/netfiles/filter.spc
@@ -0,0 +1,6 @@
+Spice circuit filter
+
+V1 GND Vin SIN(0 5 5k)
+C2 Vout GND 1.0u
+R3 Vin Vout 100k
+.end
diff --git a/netfiles/integrator.spc b/netfiles/integrator.spc
new file mode 100644
index 0000000..2448672
--- /dev/null
+++ b/netfiles/integrator.spc
@@ -0,0 +1,17 @@
+Spice circuit integrator
+
+.subckt wramp bias out in.p in.m
+M1 net.1 net.1 GND GND nmos
+M2 out net.1 GND GND nmos
+M3 net.1 net.2 Vdd Vdd pmos
+M4 out net.3 Vdd Vdd pmos
+M5 net.3 net.3 Vdd Vdd pmos
+M6 net.2 net.2 Vdd Vdd pmos
+M7 net.4 bias GND GND nmos
+M8 net.3 in.p net.4 GND nmos
+M9 net.2 in.m net.4 GND nmos
+.ends
+
+C10 Output GND 1.0P
+X1 Bias Output Input Output wramp
+.end
diff --git a/pcb/FlareLED.ps b/pcb/FlareLED.ps
new file mode 100644
index 0000000..d807858
--- /dev/null
+++ b/pcb/FlareLED.ps
@@ -0,0 +1,720 @@
+%!PS-Adobe-3.0
+%%Title: examples/FlareLED
+%%Creator: Xcircuit v2.3
+%%CreationDate: Mon Jul 2 14:17:57 2001
+%%Pages: 1
+%%BoundingBox: -319 -124 931 916
+%%DocumentNeededResources: font Helvetica font Helvetica-Bold font Times-Roman
+%%+ font Times-RomanISO font Symbol
+%%EndComments
+%%BeginProlog
+%
+% PostScript prolog for output from xcircuit
+% Version: 2.3
+%
+% Electrical circuit (and otherwise general) drawing program
+%
+% Written by Tim Edwards 8/5/93--5/16/01 (tim@bach.ece.jhu.edu)
+% The Johns Hopkins University
+%
+%%BeginResource: procset XCIRCproc 2.3 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 { 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
+ 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
+/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
+/CR { ns 0 /Bline Bline fscale0 neg add def Bline moveto } 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 /rotval exch def /just exch def
+ just 16 and 0 gt {0 1 dtransform gsave pagemat setmatrix idtransform
+ exch grestore 1 0 dtransform gsave pagemat setmatrix idtransform
+ exch grestore dup 0 eq {pop mul 0 gt} {3 1 roll pop pop 0 lt} ifelse
+ {-1 /just just dup 3 and 1 ne {3 xor} if def} {1} ifelse exch 0 lt
+ {-1 /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 0 exch {exch dup type /stringtype eq {true
+ charpath flattenpath} {exec} ifelse } repeat pop pathbbox grestore
+ 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
+ /showflag 1 def rotval rotate Kn currentpoint translate
+ /Bline 0 def /Tabs 0 array def /fscale 1.0 def /kY 0 def
+ {dup type /stringtype eq {show}{exec} ifelse} repeat grestore } def
+/pinlabel { hlevel 0 eq { /pspc 20 def label /pspc 0 def }
+ { pop pop pop pop pop {pop} repeat } ifelse } def
+/pinglobal { pinlabel } def
+/infolabel { pinlabel } def
+
+/scb { setrgbcolor } bind def /sce { defColor aload pop scb } bind def
+/cRedef {/defColor currentcolor 3 array astore def} def
+/begingate { /hlevel hlevel 1 add def /defColor currentcolor sce 3 array
+ astore def gsave sce translate 0 0 moveto dup 0 lt
+ {neg 1 sub -1 1 scale} if rotate dup scale } bind def
+/makeparm {3 string cvs dup length 1 add string /tstr exch def tstr exch
+ 1 exch putinterval tstr 0 (v) putinterval tstr cvn} bind def
+/beginparm { -1 1 {makeparm exch def} for
+ dup type /arraytype eq { aload length -1 1 {makeparm exch def}
+ for } if begingate } bind def
+/endgate { /hlevel hlevel 1 sub def grestore defColor aload pop cRedef
+ scb} bind def
+
+/hlevel 0 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 1 and 0 gt not {closepath} 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
+ style dup 256 ge exch 480 lt and { gsave 1 setgray eofill grestore } if
+ style 16 and 0 gt { gsave style 224 and -5 bitshift dup 7 lt
+ {gar exch get ppaint} { pop eofill } ifelse grestore } if
+ style 8 and 0 gt style 512 eq or { newpath } { stroke } ifelse grestore } 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 0 setlinejoin 6 setmiterlimit 0 0 0 scb cRedef } def
+/insertion {/PSobj save def /showpage {} def bop translate} 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
+
+/Times-Roman findfont dup length dict begin
+{1 index /FID ne {def} {pop pop} ifelse} forall
+/Encoding ISOLatin1Encoding def currentdict end
+/Times-RomanISO exch definefont pop
+
+% XCircuit output starts here.
+
+/PIC16C54 {
+% 0 0 480 736 bbox
+(?) 1 beginparm
+0 1.00 0 0 0 736 480 736 480 0 4 polygon
+(PIC16C54A) {/Helvetica-Bold cf} 2 21 0 1.00 240 320 label
+(Vdd) {/Helvetica cf} 2 23 0 1.00 464 368 label
+(RA2) {/Helvetica cf} 2 20 0 1.00 16 688 label
+(RA3) {/Helvetica cf} 2 20 0 1.00 16 624 label
+(RTCC) {/Helvetica cf} 2 20 0 1.00 16 560 label
+(MCLR) {ol} {/Helvetica cf} 3 20 0 1.00 16 496 label
+(Vss) {/Helvetica cf} 2 20 0 1.00 16 368 label
+(RB0) {/Helvetica cf} 2 20 0 1.00 16 240 label
+(RB1) {/Helvetica cf} 2 20 0 1.00 16 176 label
+(RB2) {/Helvetica cf} 2 20 0 1.00 16 112 label
+(RB3) {/Helvetica cf} 2 20 0 1.00 16 48 label
+(RB4) {/Helvetica cf} 2 23 0 1.00 464 48 label
+(RB5) {/Helvetica cf} 2 23 0 1.00 464 112 label
+(RB6) {/Helvetica cf} 2 23 0 1.00 464 176 label
+(RB7) {/Helvetica cf} 2 23 0 1.00 464 240 label
+(OSC2/CLKOUT) {/Helvetica cf} 2 23 0 1.00 464 496 label
+(OSC1/CLKIN) {/Helvetica cf} 2 23 0 1.00 464 560 label
+(RA0) {/Helvetica cf} 2 23 0 1.00 464 624 label
+(RA1) {/Helvetica cf} 2 23 0 1.00 464 688 label
+sce
+mark v1 (pcb:U) {/Helvetica cf} ctmk 21 0 1.00 224 256 infolabel
+1.000 0.000 0.000 scb
+(1) {/Helvetica cf} 2 23 0 1.00 0 688 pinlabel
+(2) {/Helvetica cf} 2 23 0 1.00 0 624 pinlabel
+(3) {/Helvetica cf} 2 23 0 1.00 0 560 pinlabel
+(4) {/Helvetica cf} 2 23 0 1.00 0 496 pinlabel
+(5) {/Helvetica cf} 2 23 0 1.00 0 368 pinlabel
+(6) {/Helvetica cf} 2 23 0 1.00 0 240 pinlabel
+(7) {/Helvetica cf} 2 23 0 1.00 0 176 pinlabel
+(8) {/Helvetica cf} 2 23 0 1.00 0 112 pinlabel
+(9) {/Helvetica cf} 2 23 0 1.00 0 48 pinlabel
+(10) {/Helvetica cf} 2 20 0 1.00 480 48 pinlabel
+(11) {/Helvetica cf} 2 20 0 1.00 480 112 pinlabel
+(12) {/Helvetica cf} 2 20 0 1.00 480 176 pinlabel
+(13) {/Helvetica cf} 2 20 0 1.00 480 240 pinlabel
+(14) {/Helvetica cf} 2 20 0 1.00 480 368 pinlabel
+(15) {/Helvetica cf} 2 20 0 1.00 480 496 pinlabel
+(16) {/Helvetica cf} 2 20 0 1.00 480 560 pinlabel
+(17) {/Helvetica cf} 2 20 0 1.00 480 624 pinlabel
+(18) {/Helvetica cf} 2 20 0 1.00 480 688 pinlabel
+endgate
+} def
+
+/LTC490 {
+% 0 0 416 384 bbox
+(?) 1 beginparm
+0 1.00 0 0 0 384 416 384 416 0 4 polygon
+(RS422) {/Helvetica cf} 2 21 0 1.00 192 176 label
+(Transciever) {/Helvetica cf} 2 21 0 1.00 208 128 label
+(LTC490) {/Helvetica-Bold cf} 2 21 0 1.00 192 256 label
+(Vcc) {/Helvetica cf} 2 20 0 1.00 16 336 label
+(R) {/Helvetica cf} 2 20 0 1.00 16 240 label
+(D) {/Helvetica cf} 2 20 0 1.00 16 144 label
+(GND) {/Helvetica cf} 2 20 0 1.00 16 48 label
+(Y) {/Helvetica cf} 2 23 0 1.00 400 48 label
+(Z) {/Helvetica cf} 2 23 0 1.00 400 144 label
+(B) {/Helvetica cf} 2 23 0 1.00 400 240 label
+(A) {/Helvetica cf} 2 23 0 1.00 400 336 label
+sce
+mark v1 (pcb:U) {/Helvetica cf} ctmk 21 0 1.00 208 80 infolabel
+1.000 0.000 0.000 scb
+(1) {/Helvetica cf} 2 23 0 1.00 0 336 pinlabel
+(2) {/Helvetica cf} 2 23 0 1.00 0 240 pinlabel
+(3) {/Helvetica cf} 2 23 0 1.00 0 144 pinlabel
+(4) {/Helvetica cf} 2 23 0 1.00 0 48 pinlabel
+(5) {/Helvetica cf} 2 20 0 1.00 416 48 pinlabel
+(6) {/Helvetica cf} 2 20 0 1.00 416 144 pinlabel
+(7) {/Helvetica cf} 2 20 0 1.00 416 240 pinlabel
+(8) {/Helvetica cf} 2 20 0 1.00 416 336 pinlabel
+endgate
+} def
+
+/terminal_block {
+% -160 -80 320 173 bbox
+(?) 1 beginparm
+0 1.00 -160 -80 -160 48 160 48 160 -80 4 polygon
+(ED100/3DS) {/Helvetica cf} 2 21 0 1.00 0 80 label
+1 1.00 0 -16 32 0.00 360.00 xcarc
+1 1.00 96 -16 32 0.00 360.00 xcarc
+1 1.00 -96 -16 32 0.00 360.00 xcarc
+sce
+mark v1 (pcb:J) {/Helvetica cf} ctmk 21 0 1.00 0 -112 infolabel
+1.000 0.000 0.000 scb
+(1) {/Helvetica cf} 2 25 0 1.00 -96 -16 pinlabel
+(2) {/Helvetica cf} 2 25 0 1.00 0 -16 pinlabel
+(3) {/Helvetica cf} 2 25 0 1.00 96 -16 pinlabel
+endgate
+} def
+
+/LTC1152 {
+% -192 -192 384 384 bbox
+(?) 1 beginparm
+0 1.00 -192 -192 -192 192 192 192 192 -192 4 polygon
+(LTC1152) {/Helvetica-Bold cf} 2 25 0 1.00 0 48 label
+(Op-amp) {/Helvetica cf} 2 29 0 1.00 0 0 label
+(SHDN) {/Helvetica cf} 2 20 0 1.00 -176 144 label
+(IN) {/Helvetica cf} (-) {/Symbol cf} 4 20 0 1.00 -176 48 label
+(IN) {/Helvetica cf} (+) {/Symbol cf} 4 20 0 1.00 -176 -48 label
+(-) {/Symbol cf} (V) {/Helvetica cf} 4 20 0 1.00 -176 -144 label
+(COMP) {/Helvetica cf} 2 23 0 1.00 176 -144 label
+(OUT) {/Helvetica cf} 2 23 0 1.00 176 -48 label
+(+) {/Symbol cf} (V) {/Helvetica cf} 4 23 0 1.00 176 48 label
+(CP) {/Helvetica cf} 2 23 0 1.00 176 144 label
+sce
+mark v1 (pcb:U) {/Helvetica cf} ctmk 21 0 1.00 0 -80 infolabel
+1.000 0.000 0.000 scb
+(1) {/Helvetica cf} 2 23 0 1.00 -192 144 pinlabel
+(2) {/Helvetica cf} 2 23 0 1.00 -192 48 pinlabel
+(3) {/Helvetica cf} 2 23 0 1.00 -192 -48 pinlabel
+(5) {/Helvetica cf} 2 20 0 1.00 192 -144 pinlabel
+(4) {/Helvetica cf} 2 23 0 1.00 -192 -144 pinlabel
+(6) {/Helvetica cf} 2 20 0 1.00 192 -48 pinlabel
+(7) {/Helvetica cf} 2 20 0 1.00 192 48 pinlabel
+(8) {/Helvetica cf} 2 20 0 1.00 192 144 pinlabel
+endgate
+} def
+
+/DSUB9 {
+% -160 0 320 186 bbox
+(?) 1 beginparm
+1 1.00 -128 96 16 0.00 360.00 xcarc
+1 1.00 -32 32 16 0.00 360.00 xcarc
+1 1.00 0 96 16 0.00 360.00 xcarc
+1 1.00 64 96 16 0.00 360.00 xcarc
+1 1.00 128 96 16 15.00 375.00 xcarc
+1 1.00 96 32 16 0.00 360.00 xcarc
+1 1.00 32 32 16 0.00 360.00 xcarc
+1 1.00 -64 96 16 0.00 360.00 xcarc
+1 1.00 -96 32 16 0.00 360.00 xcarc
+sce
+mark v1 (pcb:J) {/Helvetica cf} ctmk 21 0 1.00 16 -48 infolabel
+128 128 beginpath
+128 96 32 450.00 333.43 arcn
+124 17 1 polyc
+96 32 32 333.43 270.00 arcn
+-96 0 1 polyc
+-96 32 32 270.00 206.57 arcn
+-156 81 1 polyc
+-128
+96 32 206.57 90.00 arcn
+128 128 1 polyc
+1 1.00 endpath
+(AMP 745781-4) {/Helvetica cf} 2 25 0 1.00 0 160 label
+1.000 0.000 0.000 scb
+(1) {/Helvetica cf} 2 25 0 1.00 -128 96 pinlabel
+(3) {/Helvetica cf} 2 25 0 1.00 0 96 pinlabel
+(2) {/Helvetica cf} 2 25 0 1.00 -64 96 pinlabel
+(4) {/Helvetica cf} 2 25 0 1.00 64 96 pinlabel
+(5) {/Helvetica cf} 2 25 0 1.00 128 96 pinlabel
+(6) {/Helvetica cf} 2 29 0 1.00 -96 32 pinlabel
+(7) {/Helvetica cf} 2 29 0 1.00 -32 32 pinlabel
+(8) {/Helvetica cf} 2 29 0 1.00 32 32 pinlabel
+(9) {/Helvetica cf} 2 29 0 1.00 96 32 pinlabel
+endgate
+} def
+
+/Crystal {
+% -144 -144 288 288 bbox
+(?) 1 beginparm
+0 1.00 -144 -144 -144 144 144 144 144 -144 4 polygon
+(CTX169) {/Helvetica-Bold cf} 2 25 0 1.00 0 16 label
+(MHz) {hS} (20) {/Helvetica cf} 4 21 0 1.00 0 -32 label
+(N/C) {/Helvetica cf} 2 20 0 1.00 -128 96 label
+(GND) {/Helvetica cf} 2 20 0 1.00 -128 -96 label
+(OUT) {/Helvetica cf} 2 23 0 1.00 128 -96 label
+(Vdd) {/Helvetica cf} 2 23 0 1.00 128 96 label
+sce
+mark v1 (pcb:X) {/Helvetica cf} ctmk 21 0 1.00 0 -176 infolabel
+1.000 0.000 0.000 scb
+(1) {/Helvetica cf} 2 23 0 1.00 -144 96 pinlabel
+(2) {/Helvetica cf} 2 23 0 1.00 -144 -96 pinlabel
+(3) {/Helvetica cf} 2 20 0 1.00 144 -96 pinlabel
+(4) {/Helvetica cf} 2 20 0 1.00 144 96 pinlabel
+endgate
+} def
+
+/ADC12138 {
+% -240 -464 480 928 bbox
+(?) 1 beginparm
+0 1.00 -240 -464 -240 464 240 464 240 -464 4 polygon
+(CH0) {/Helvetica cf} 2 20 0 1.00 -224 416 label
+(CH1) {/Helvetica cf} 2 20 0 1.00 -224 352 label
+(CH2) {/Helvetica cf} 2 20 0 1.00 -224 288 label
+(CH3) {/Helvetica cf} 2 20 0 1.00 -224 224 label
+(CH4) {/Helvetica cf} 2 20 0 1.00 -224 160 label
+(CH5) {/Helvetica cf} 2 20 0 1.00 -224 96 label
+(CH6) {/Helvetica cf} 2 20 0 1.00 -224 32 label
+(CH7) {/Helvetica cf} 2 20 0 1.00 -224 -32 label
+(COM) {/Helvetica cf} 2 20 0 1.00 -224 -96 label
+(MuxOut1) {/Helvetica cf} 2 20 0 1.00 -224 -160 label
+(A/Din2) {/Helvetica cf} 2 20 0 1.00 -224 -352 label
+(DGND) {/Helvetica cf} 2 20 0 1.00 -224 -416 label
+(+) {/Symbol cf} (VA) {/Helvetica cf} 4 23 0 1.00 224 -416 label
+(-) {/Symbol cf} (Vref) {/Helvetica cf} 4 23 0 1.00 224 -352 label
+(+) {/Symbol cf} (Vref) {/Helvetica cf} 4 23 0 1.00 224 -288 label
+(AGND) {/Helvetica cf} 2 23 0 1.00 224 -224 label
+(PD) {/Helvetica cf} 2 23 0 1.00 224 -160 label
+(EOC) {/Helvetica cf} 2 23 0 1.00 224 -96 label
+(CONV) {ol} {/Helvetica cf} 3 23 0 1.00 224 -32 label
+(CS) {ol} {/Helvetica cf} 3 23 0 1.00 224 32 label
+(DO) {/Helvetica cf} 2 23 0 1.00 224 96 label
+(DI) {/Helvetica cf} 2 23 0 1.00 224 160 label
+(SCLK) {/Helvetica cf} 2 23 0 1.00 224 224 label
+(A/Din1) {/Helvetica cf} 2 20 0 1.00 -224 -224 label
+(MuxOut2) {/Helvetica cf} 2 20 0 1.00 -224 -288 label
+(CCLK) {/Helvetica cf} 2 23 0 1.00 224 288 label
+(DOR) {ol} {/Helvetica cf} 3 23 0 1.00 224 352 label
+(+) {/Symbol cf} (VD) {/Helvetica cf} 4 23 0 1.00 224 416 label
+(ADC12138) {/Helvetica-Bold cf} 2 21 0 1.00 0 64 label
+sce
+mark v1 (pcb:U) {/Helvetica cf} ctmk 21 0 1.00 0 0 infolabel
+1.000 0.000 0.000 scb
+(1) {/Helvetica cf} 2 23 0 1.00 -240 416 pinlabel
+(2) {/Helvetica cf} 2 23 0 1.00 -240 352 pinlabel
+(3) {/Helvetica cf} 2 23 0 1.00 -240 288 pinlabel
+(4) {/Helvetica cf} 2 23 0 1.00 -240 224 pinlabel
+(5) {/Helvetica cf} 2 23 0 1.00 -240 160 pinlabel
+(6) {/Helvetica cf} 2 23 0 1.00 -240 96 pinlabel
+(7) {/Helvetica cf} 2 23 0 1.00 -240 32 pinlabel
+(8) {/Helvetica cf} 2 23 0 1.00 -240 -32 pinlabel
+(9) {/Helvetica cf} 2 23 0 1.00 -240 -96 pinlabel
+(10) {/Helvetica cf} 2 23 0 1.00 -240 -160 pinlabel
+(11) {/Helvetica cf} 2 23 0 1.00 -240 -224 pinlabel
+(12) {/Helvetica cf} 2 23 0 1.00 -240 -288 pinlabel
+(13) {/Helvetica cf} 2 23 0 1.00 -240 -352 pinlabel
+(14) {/Helvetica cf} 2 23 0 1.00 -240 -416 pinlabel
+(15) {/Helvetica cf} 2 20 0 1.00 240 -416 pinlabel
+(16) {/Helvetica cf} 2 20 0 1.00 240 -352 pinlabel
+(17) {/Helvetica cf} 2 20 0 1.00 240 -288 pinlabel
+(18) {/Helvetica cf} 2 20 0 1.00 240 -224 pinlabel
+(19) {/Helvetica cf} 2 20 0 1.00 240 -160 pinlabel
+(20) {/Helvetica cf} 2 20 0 1.00 240 -96 pinlabel
+(21) {/Helvetica cf} 2 20 0 1.00 240 -32 pinlabel
+(22) {/Helvetica cf} 2 20 0 1.00 240 32 pinlabel
+(23) {/Helvetica cf} 2 20 0 1.00 240 96 pinlabel
+(24) {/Helvetica cf} 2 20 0 1.00 240 160 pinlabel
+(25) {/Helvetica cf} 2 20 0 1.00 240 224 pinlabel
+(26) {/Helvetica cf} 2 20 0 1.00 240 288 pinlabel
+(27) {/Helvetica cf} 2 20 0 1.00 240 352 pinlabel
+(28) {/Helvetica cf} 2 20 0 1.00 240 416 pinlabel
+endgate
+} def
+
+/TK11950 {
+% -336 -112 672 224 bbox
+(?) 1 beginparm
+0 1.00 -336 -112 -336 112 336 112 336 -112 4 polygon
+(NOISE BYPASS) {/Helvetica cf} 2 20 0 1.00 -320 64 label
+(CONTROL) {/Helvetica cf} 2 20 0 1.00 -320 0 label
+(RESET OUT) {/Helvetica cf} 2 20 0 1.00 -320 -64 label
+(VO) {/Helvetica cf} 2 23 0 1.00 320 -64 label
+(GND) {/Helvetica cf} 2 23 0 1.00 320 0 label
+(VIN) {/Helvetica cf} 2 23 0 1.00 320 64 label
+(TK11950) {/Helvetica-Bold cf} 2 21 0 1.00 64 16 label
+(V) {hS} (5.0) {/Helvetica cf} 4 29 0 1.00 64 -32 label
+sce
+mark v1 (pcb:U) {/Helvetica cf} ctmk 21 0 1.00 0 -144 infolabel
+1.000 0.000 0.000 scb
+(1) {/Helvetica cf} 2 23 0 1.00 -336 64 pinlabel
+(2) {/Helvetica cf} 2 23 0 1.00 -336 0 pinlabel
+(3) {/Helvetica cf} 2 23 0 1.00 -336 -64 pinlabel
+(4) {/Helvetica cf} 2 20 0 1.00 336 -64 pinlabel
+(5) {/Helvetica cf} 2 20 0 1.00 336 0 pinlabel
+(6) {/Helvetica cf} 2 20 0 1.00 336 64 pinlabel
+endgate
+} def
+
+/Capacitor {
+% -32 -64 186 128 bbox
+(1.0) (\265) (?) 3 beginparm
+1 1.00 0 -64 0 -6 2 polygon
+1 1.00 0 64 0 6 2 polygon
+1 1.00 -32 6 32 6 2 polygon
+1 1.00 -32 -6 32 -6 2 polygon
+1.000 0.000 0.000 scb
+(1) {/Times-Roman cf} 2 9 0 1.00 0 64 pinlabel
+(2) {/Times-Roman cf} 2 13 0 1.00 0 -64 pinlabel
+sce
+mark v2 v1 ( %p1 %p2 ) v3 (spice:C) {/Times-RomanISO cf} ctmk 4 0 1.00 -208
+-160 infolabel
+sce
+(sim:c %p1 %p2) {/Times-Roman cf} 2 4 0 1.00 -208 -208 infolabel
+mark (F) v2 {hS} v1 {/Times-RomanISO cf} ctmk 20 0 1.00 48 0 label
+sce
+mark v3 (pcb:C) {/Times-Roman cf} ctmk 20 0 1.00 -208 -256 infolabel
+endgate
+} def
+
+/LM13700 {
+% -256 -256 480 544 bbox
+(?) 1 beginparm
+0 1.00 -256 -256 -256 288 224 288 224 -256 4 polygon
+(BufIn1) {/Helvetica cf} 2 20 0 1.00 -240 -144 label
+(BufOut1) {/Helvetica cf} 2 20 0 1.00 -240 -208 label
+(BufIn2) {/Helvetica cf} 2 23 0 1.00 208 -144 label
+(+) {/Symbol cf} (V) {/Helvetica cf} 4 23 0 1.00 208 -80 label
+(Out2) {/Helvetica cf} 2 23 0 1.00 208 -16 label
+1.000 0.000 0.000 scb
+(7) {/Helvetica cf} 2 23 0 1.00 -256 -144 pinlabel
+(8) {/Helvetica cf} 2 23 0 1.00 -256 -208 pinlabel
+(10) {/Helvetica cf} 2 20 0 1.00 224 -144 pinlabel
+(11) {/Helvetica cf} 2 20 0 1.00 224 -80 pinlabel
+(12) {/Helvetica cf} 2 20 0 1.00 224 -16 pinlabel
+sce
+(LM13700) {/Helvetica-Bold cf} 2 21 0 1.00 -16 16 label
+(Iabc1) {/Helvetica cf} 2 20 0 1.00 -240 240 label
+(Dbias1) {/Helvetica cf} 2 20 0 1.00 -240 176 label
+(1) {/Helvetica cf} (+) {/Symbol cf} (In) {/Helvetica cf} 6 20 0 1.00 -240 112
+label
+(Out1) {/Helvetica cf} 2 20 0 1.00 -240 -16 label
+1.000 0.000 0.000 scb
+(1) {/Helvetica cf} 2 23 0 1.00 -256 240 pinlabel
+(2) {/Helvetica cf} 2 23 0 1.00 -256 176 pinlabel
+(3) {/Helvetica cf} 2 23 0 1.00 -256 112 pinlabel
+(4) {/Helvetica cf} 2 23 0 1.00 -256 48 pinlabel
+(5) {/Helvetica cf} 2 23 0 1.00 -256 -16 pinlabel
+(14) {/Helvetica cf} 2 20 0 1.00 224 112 pinlabel
+(15) {/Helvetica cf} 2 20 0 1.00 224 176 pinlabel
+(16) {/Helvetica cf} 2 20 0 1.00 224 240 pinlabel
+sce
+(-) {/Symbol cf} (V) {/Helvetica cf} 4 20 0 1.00 -240 -80 label
+1.000 0.000 0.000 scb
+(6) {/Helvetica cf} 2 23 0 1.00 -256 -80 pinlabel
+(13) {/Helvetica cf} 2 20 0 1.00 224 48 pinlabel
+sce
+(BufOut2) {/Helvetica cf} 2 23 0 1.00 208 -208 label
+1.000 0.000 0.000 scb
+(9) {/Helvetica cf} 2 20 0 1.00 224 -208 pinlabel
+sce
+(1) {/Helvetica cf} (-) {/Symbol cf} (In) {/Helvetica cf} 6 20 0 1.00 -240 48
+label
+(Iabc2) {/Helvetica cf} 2 23 0 1.00 208 240 label
+(Dbias2) {/Helvetica cf} 2 23 0 1.00 208 176 label
+(2) {/Helvetica cf} (+) {/Symbol cf} (In) {/Helvetica cf} 6 23 0 1.00 208 112
+label
+(2) {/Helvetica cf} (-) {/Symbol cf} (In) {/Helvetica cf} 6 23 0 1.00 208 48
+label
+sce
+mark v1 (pcb:U) {/Helvetica cf} ctmk 21 0 1.00 -16 -304 infolabel
+endgate
+} def
+
+/Resistor {
+% -14 -64 157 128 bbox
+(1.0) (k) (?) 3 beginparm
+1 1.00 0 64 0 36 2 polygon
+1 1.00 0 -64 0 -36 2 polygon
+1 1.00 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.00 0 64 pinlabel
+(2) {/Times-Roman cf} 2 13 0 1.00 0 -64 pinlabel
+sce
+mark v2 v1 ( %p1 %p2 ) v3 (spice:R) {/Times-Roman cf} ctmk 4 0 1.00 -208 -160
+infolabel
+sce
+(sim:R %p1 %p2) {/Times-Roman cf} 2 4 0 1.00 -208 -208 infolabel
+mark (W) {/Symbol cf} v2 {hS} v1 {/Times-Roman cf} ctmk 20 0 1.00 32 0 label
+sce
+mark v3 (pcb:R) {/Times-Roman cf} ctmk 20 0 1.00 -208 -256 infolabel
+endgate
+} def
+
+/gnd {
+% -32 -60 64 68 bbox
+% trivial
+begingate
+1 1.00 0 0 0 -32 2 polygon
+1 1.00 -32 -32 32 -32 2 polygon
+1 1.00 -18 -46 18 -46 2 polygon
+1 1.00 -4 -60 4 -60 2 polygon
+1.000 0.000 0.000 scb
+(GND) {/Times-Roman cf} 2 1 0 1.00 0 0 pinglobal
+endgate
+} def
+
+/dot {
+% -10 -10 20 20 bbox
+% trivial
+begingate
+248 1.00 0 0 6 0.00 360.00 xcarc
+1.000 0.000 0.000 scb
+(x) {/Times-Roman cf} 2 29 0 1.00 0 0 pinlabel
+endgate
+} def
+
+/vdd {
+% -32 0 64 66 bbox
+% trivial
+begingate
+1 1.00 0 0 0 32 2 polygon
+1 1.00 -32 32 32 32 2 polygon
+(Vdd) {/Times-Roman cf} 2 17 0 0.90 0 38 label
+1.000 0.000 0.000 scb
+(Vdd) {/Times-Roman cf} 2 13 0 1.00 0 0 pinglobal
+endgate
+} def
+
+%%Page: 1 1
+%%PageOrientation: Portrait
+/pgsave save def bop
+% 1688 848 offsets
+1.0000 inchscale
+2.6000 setlinewidth
+
+1.00 0 664 1648 [(5) ] PIC16C54
+1.00 180 -24 2384 [(6) ] LTC490
+1.00 0 712 -160 [(2) ] terminal_block
+1.00 0 1800 944 [(7) ] LTC1152
+1.00 0 -568 1296 [(3) ] DSUB9
+1.00 180 1576 2192 [(1) ] Crystal
+1.00 0 904 1088 [(2) ] ADC12138
+1.00 -181 -56 1664 [(4) ] TK11950
+1 1.00 1432 2288 1304 2288 1304 2208 1144 2208 4 polygon
+1.00 -1 2072 1168 Capacitor
+1.00 0 920 304 [(1) ] LM13700
+1.00 0 1096 -160 [(1) ] terminal_block
+1.00 0 1320 1424 Resistor
+1.00 0 120 1984 Resistor
+1.00 0 328 1456 Resistor
+1.00 -1 -696 2064 Resistor
+1.00 0 408 1600 Resistor
+1.00 0 1384 992 Resistor
+1.00 0 1784 2224 Capacitor
+1.00 -1 1512 720 Capacitor
+1.00 0 2088 832 Capacitor
+1.00 0 -280 1456 Capacitor
+1.00 0 504 416 Capacitor
+1 1.00 664 544 504 544 504 480 3 polygon
+1 1.00 504 352 504 224 664 224 3 polygon
+1 1.00 -664 1328 -664 224 504 224 3 polygon
+1.00 0 -664 224 gnd
+1 1.00 664 160 -472 160 -472 1328 3 polygon
+1 1.00 -696 2000 -696 1392 2 polygon
+1 1.00 -440 2240 -504 2240 -504 1392 3 polygon
+1 1.00 -440 2336 -568 2336 -568 1392 3 polygon
+1 1.00 280 1664 408 1664 408 2336 -24 2336 4 polygon
+1 1.00 -24 2048 344 2048 2 polygon
+1 1.00 344 2048 344 1728 280 1728 3 polygon
+1 1.00 328 1520 328 1600 280 1600 3 polygon
+1 1.00 408 1664 408 1664 2 polygon
+1 1.00 328 1520 408 1520 408 1536 3 polygon
+1.00 -181 1704 1760 [(3) ] TK11950
+1 1.00 1144 736 1352 736 2 polygon
+1.00 0 1352 736 dot
+1 1.00 1608 896 1384 896 1384 928 3 polygon
+1 1.00 1608 1088 1384 1088 1384 1056 3 polygon
+1 1.00 1992 992 2136 992 2136 1232 1384 1232 1384 1088 5 polygon
+1.00 0 1384 1088 dot
+1 1.00 -440 2144 -696 2144 -696 2128 3 polygon
+1 1.00 -440 2048 -536 2048 -536 2000 -696 2000 4 polygon
+1 1.00 -632 1392 -632 2144 2 polygon
+1.00 0 -632 2144 dot
+1.00 0 -696 2000 dot
+1 1.00 -440 1392 -440 1888 408 1888 3 polygon
+1.00 0 408 1888 dot
+1.00 0 408 1664 dot
+1.00 0 328 1520 dot
+1 1.00 1144 2016 1368 2016 1368 2112 1432 2112 4 polygon
+1 1.00 664 2016 568 2016 568 2432 1784 2432 1784 2288 1720 2288 6 polygon
+1 1.00 1352 2016 1784 2016 1784 2160 3 polygon
+1.00 0 1368 2016 dot
+1 1.00 1144 1376 1240 1376 1240 2144 1144 2144 4 polygon
+1 1.00 1144 1312 1224 1312 1224 1632 616 1632 616 1888 664 1888 6 polygon
+1 1.00 1144 1248 1208 1248 1208 1616 600 1616 600 1824 664 1824 6 polygon
+1 1.00 1144 1184 1192 1184 1192 1600 584 1600 584 1760 664 1760 6 polygon
+1 1.00 1144 1120 1176 1120 1176 1584 568 1584 568 1696 664 1696 6 polygon
+1 1.00 1144 1056 1256 1056 1256 1760 1144 1760 4 polygon
+1 1.00 1144 992 1272 992 1272 1696 1144 1696 4 polygon
+1 1.00 1144 2272 1208 2272 1208 2416 24 2416 24 2240 -24 2240 6 polygon
+1 1.00 -24 2144 40 2144 40 2400 1176 2400 1176 2336 1144 2336 6 polygon
+1 1.00 664 736 632 736 632 800 664 800 4 polygon
+1 1.00 664 864 632 864 632 928 664 928 4 polygon
+1 1.00 664 672 600 672 2 polygon
+1.00 0 456 608 gnd
+1.00 0 -280 1360 gnd
+1 1.00 -280 1392 -440 1392 2 polygon
+1.00 0 1368 2112 vdd
+1 1.00 1992 800 2040 800 2040 768 2088 768 4 polygon
+1.00 0 1512 640 dot
+1 1.00 1608 800 1512 800 1512 784 3 polygon
+1.00 0 2088 896 dot
+1 1.00 1992 1088 2072 1088 2072 1104 3 polygon
+1.00 0 2072 1232 dot
+1 1.00 664 96 408 96 408 480 664 480 4 polygon
+1 1.00 408 96 408 0 1208 0 1208 480 1128 480 5 polygon
+1.00 0 408 96 dot
+1 1.00 408 480 408 1040 536 1040 536 1440 664 1440 5 polygon
+1.00 0 408 480 dot
+(Flare Genesis) {/Helvetica cf} 2 16 0 1.50 1896 432 label
+(LED Interface) {/Helvetica cf} 2 16 0 1.50 1896 336 label
+1 1.00 664 416 632 416 632 16 712 16 712 -176 5 polygon
+1 1.00 664 352 616 352 616 -176 3 polygon
+1 1.00 1000 -176 1000 -16 1240 -16 1240 352 1144 352 5 polygon
+1 1.00 1096 -176 1096 -32 1256 -32 1256 416 1144 416 5 polygon
+1 1.00 1192 -176 1192 -288 344 -288 344 1072 504 1072 504 1248 664 1248
+7 polygon
+1 1.00 1144 288 1304 288 1304 -320 296 -320 296 1104 472 1104 472 1504 664
+1504 8 polygon
+1 1.00 1144 672 1288 672 1288 800 1144 800 4 polygon
+1 1.00 1384 1072 1288 1072 1288 800 1192 800 4 polygon
+1.00 0 1288 800 dot
+1.00 0 1384 1072 dot
+1 1.00 1144 864 1240 864 1240 928 1144 928 4 polygon
+1 1.00 1560 848 1560 992 1608 992 3 polygon
+1 1.00 1560 848 1352 848 1352 640 2136 640 2136 896 1992 896 6 polygon
+1 1.00 1512 656 1512 640 2 polygon
+1 1.00 1576 800 1576 720 2 polygon
+1.00 0 1576 800 dot
+1.00 0 1576 720 gnd
+1 1.00 -392 1664 -440 1664 2 polygon
+1.00 0 -440 1664 dot
+1 1.00 -392 1728 -424 1728 -424 1856 472 1856 472 2144 664 2144 6 polygon
+1 1.00 120 1920 120 1856 2 polygon
+1.00 0 120 2048 dot
+1.00 0 120 1856 dot
+1 1.00 -392 1600 -408 1600 -408 1520 -280 1520 4 polygon
+1 1.00 -280 1360 -280 1392 2 polygon
+1.00 0 -280 1392 dot
+1 1.00 328 1392 328 1248 -472 1248 3 polygon
+1.00 0 -472 1248 dot
+1 1.00 1144 224 1320 224 2 polygon
+1 1.00 1176 224 1176 32 504 32 504 160 4 polygon
+1.00 0 504 160 dot
+1.00 0 1176 224 dot
+1 1.00 1320 1360 1320 224 2 polygon
+1 1.00 2136 1232 2136 1696 2040 1696 3 polygon
+1.00 0 2136 1232 dot
+1 1.00 2040 1760 2136 1760 2136 1936 1320 1936 1320 1760 1368 1760 6 polygon
+1 1.00 1320 1488 1320 1584 2088 1584 2088 1824 2040 1824 5 polygon
+1 1.00 664 992 600 992 600 1184 664 1184 4 polygon
+1 1.00 664 1120 600 1120 2 polygon
+1 1.00 664 1056 600 1056 2 polygon
+1.00 0 600 1056 dot
+1.00 0 600 1120 dot
+1 1.00 600 992 600 608 2 polygon
+1.00 0 600 672 dot
+1.00 0 600 992 dot
+1 1.00 1240 864 1240 608 456 608 3 polygon
+1.00 0 600 608 dot
+1.00 0 1240 864 dot
+(is not complete!) {CR} (this schematic) {/Helvetica cf} 4 16 0 1.00 1864 -80
+label
+0 1.00 1592 -176 1592 496 2456 496 2456 -176 4 polygon
+1 1.00 1592 400 2456 400 2 polygon
+1 1.00 1592 304 2456 304 2 polygon
+(1.0) {/Helvetica cf} 2 16 0 1.50 1896 240 label
+1 1.00 1592 208 2456 208 2 polygon
+(Project:) {/Helvetica cf} 2 16 0 1.50 1624 432 label
+(Name:) {/Helvetica cf} 2 16 0 1.50 1624 336 label
+(Revision:) {/Helvetica cf} 2 16 0 1.50 1624 240 label
+(Design:) {/Helvetica cf} 2 16 0 1.50 1624 144 label
+(Date:) {/Helvetica cf} 2 16 0 1.50 1624 48 label
+(Notes:) {/Helvetica cf} 2 16 0 1.50 1624 -48 label
+1 1.00 1592 112 2456 112 2 polygon
+1 1.00 1592 16 2456 16 2 polygon
+(Harry Eaton) {/Helvetica cf} 2 16 0 1.50 1912 144 label
+0 1.00 1576 -192 1576 512 2472 512 2472 -192 4 polygon
+1.00 0 -664 224 dot
+pgsave restore showpage
+
+%%Trailer
+XCIRCsave restore
+%%EOF
diff --git a/pcb/LED b/pcb/LED
new file mode 100755
index 0000000..dcfdb16
--- /dev/null
+++ b/pcb/LED
@@ -0,0 +1,1794 @@
+# release: pcb 1.7.0.ALPHA
+# date: Sat Jan 16 20:06:58 1999
+# user: root (root)
+# host: localhost
+
+PCB("" 3500 3300)
+
+Grid(5 0 0 0)
+Cursor(65 880 4)
+Flags(0x000001d0)
+Groups("4,5,6,c:1,2,3,s:8:7:")
+Styles("Signal,10,40,20:Power,25,60,35:Fat,40,60,35:Skinny,8,36,20")
+
+Symbol(' ' 18)
+(
+)
+Symbol('!' 12)
+(
+ SymbolLine(0 35 0 40 8)
+ SymbolLine(0 0 0 25 8)
+)
+Symbol('"' 12)
+(
+ SymbolLine(0 0 0 10 8)
+ SymbolLine(10 0 10 10 8)
+)
+Symbol('#' 12)
+(
+ SymbolLine(0 25 20 25 8)
+ SymbolLine(0 15 20 15 8)
+ SymbolLine(15 10 15 30 8)
+ SymbolLine(5 10 5 30 8)
+)
+Symbol('$' 12)
+(
+ SymbolLine(15 5 20 10 8)
+ SymbolLine(5 5 15 5 8)
+ SymbolLine(0 10 5 5 8)
+ SymbolLine(0 10 0 15 8)
+ SymbolLine(0 15 5 20 8)
+ SymbolLine(5 20 15 20 8)
+ SymbolLine(15 20 20 25 8)
+ SymbolLine(20 25 20 30 8)
+ SymbolLine(15 35 20 30 8)
+ SymbolLine(5 35 15 35 8)
+ SymbolLine(0 30 5 35 8)
+ SymbolLine(10 0 10 40 8)
+)
+Symbol('%' 12)
+(
+ SymbolLine(0 5 0 10 8)
+ SymbolLine(0 5 5 0 8)
+ SymbolLine(5 0 10 0 8)
+ SymbolLine(10 0 15 5 8)
+ SymbolLine(15 5 15 10 8)
+ SymbolLine(10 15 15 10 8)
+ SymbolLine(5 15 10 15 8)
+ SymbolLine(0 10 5 15 8)
+ SymbolLine(0 40 40 0 8)
+ SymbolLine(35 40 40 35 8)
+ SymbolLine(40 30 40 35 8)
+ SymbolLine(35 25 40 30 8)
+ SymbolLine(30 25 35 25 8)
+ SymbolLine(25 30 30 25 8)
+ SymbolLine(25 30 25 35 8)
+ SymbolLine(25 35 30 40 8)
+ SymbolLine(30 40 35 40 8)
+)
+Symbol('&' 12)
+(
+ SymbolLine(0 35 5 40 8)
+ SymbolLine(0 5 0 15 8)
+ SymbolLine(0 5 5 0 8)
+ SymbolLine(0 25 15 10 8)
+ SymbolLine(5 40 10 40 8)
+ SymbolLine(10 40 20 30 8)
+ SymbolLine(0 15 25 40 8)
+ SymbolLine(5 0 10 0 8)
+ SymbolLine(10 0 15 5 8)
+ SymbolLine(15 5 15 10 8)
+ SymbolLine(0 25 0 35 8)
+)
+Symbol(''' 12)
+(
+ SymbolLine(0 10 10 0 8)
+)
+Symbol('(' 12)
+(
+ SymbolLine(0 35 5 40 8)
+ SymbolLine(0 5 5 0 8)
+ SymbolLine(0 5 0 35 8)
+)
+Symbol(')' 12)
+(
+ SymbolLine(0 0 5 5 8)
+ SymbolLine(5 5 5 35 8)
+ SymbolLine(0 40 5 35 8)
+)
+Symbol('*' 12)
+(
+ SymbolLine(0 10 20 30 8)
+ SymbolLine(0 30 20 10 8)
+ SymbolLine(0 20 20 20 8)
+ SymbolLine(10 10 10 30 8)
+)
+Symbol('+' 12)
+(
+ SymbolLine(0 20 20 20 8)
+ SymbolLine(10 10 10 30 8)
+)
+Symbol(',' 12)
+(
+ SymbolLine(0 50 10 40 8)
+)
+Symbol('-' 12)
+(
+ SymbolLine(0 20 20 20 8)
+)
+Symbol('.' 12)
+(
+ SymbolLine(0 40 5 40 8)
+)
+Symbol('/' 12)
+(
+ SymbolLine(0 35 30 5 8)
+)
+Symbol('0' 12)
+(
+ SymbolLine(0 35 5 40 8)
+ SymbolLine(0 5 0 35 8)
+ SymbolLine(0 5 5 0 8)
+ SymbolLine(5 0 15 0 8)
+ SymbolLine(15 0 20 5 8)
+ SymbolLine(20 5 20 35 8)
+ SymbolLine(15 40 20 35 8)
+ SymbolLine(5 40 15 40 8)
+ SymbolLine(0 30 20 10 8)
+)
+Symbol('1' 12)
+(
+ SymbolLine(5 40 15 40 8)
+ SymbolLine(10 0 10 40 8)
+ SymbolLine(0 10 10 0 8)
+)
+Symbol('2' 12)
+(
+ SymbolLine(0 5 5 0 8)
+ SymbolLine(5 0 20 0 8)
+ SymbolLine(20 0 25 5 8)
+ SymbolLine(25 5 25 15 8)
+ SymbolLine(0 40 25 15 8)
+ SymbolLine(0 40 25 40 8)
+)
+Symbol('3' 12)
+(
+ SymbolLine(0 5 5 0 8)
+ SymbolLine(5 0 15 0 8)
+ SymbolLine(15 0 20 5 8)
+ SymbolLine(20 5 20 35 8)
+ SymbolLine(15 40 20 35 8)
+ SymbolLine(5 40 15 40 8)
+ SymbolLine(0 35 5 40 8)
+ SymbolLine(5 20 20 20 8)
+)
+Symbol('4' 12)
+(
+ SymbolLine(0 20 20 0 8)
+ SymbolLine(0 20 25 20 8)
+ SymbolLine(20 0 20 40 8)
+)
+Symbol('5' 12)
+(
+ SymbolLine(0 0 20 0 8)
+ SymbolLine(0 0 0 20 8)
+ SymbolLine(0 20 5 15 8)
+ SymbolLine(5 15 15 15 8)
+ SymbolLine(15 15 20 20 8)
+ SymbolLine(20 20 20 35 8)
+ SymbolLine(15 40 20 35 8)
+ SymbolLine(5 40 15 40 8)
+ SymbolLine(0 35 5 40 8)
+)
+Symbol('6' 12)
+(
+ SymbolLine(15 0 20 5 8)
+ SymbolLine(5 0 15 0 8)
+ SymbolLine(0 5 5 0 8)
+ SymbolLine(0 5 0 35 8)
+ SymbolLine(0 35 5 40 8)
+ SymbolLine(15 20 20 25 8)
+ SymbolLine(0 20 15 20 8)
+ SymbolLine(5 40 15 40 8)
+ SymbolLine(15 40 20 35 8)
+ SymbolLine(20 25 20 35 8)
+)
+Symbol('7' 12)
+(
+ SymbolLine(0 40 25 15 8)
+ SymbolLine(25 0 25 15 8)
+ SymbolLine(0 0 25 0 8)
+)
+Symbol('8' 12)
+(
+ SymbolLine(0 35 5 40 8)
+ SymbolLine(0 25 0 35 8)
+ SymbolLine(0 25 5 20 8)
+ SymbolLine(5 20 15 20 8)
+ SymbolLine(15 20 20 25 8)
+ SymbolLine(20 25 20 35 8)
+ SymbolLine(15 40 20 35 8)
+ SymbolLine(5 40 15 40 8)
+ SymbolLine(0 15 5 20 8)
+ SymbolLine(0 5 0 15 8)
+ SymbolLine(0 5 5 0 8)
+ SymbolLine(5 0 15 0 8)
+ SymbolLine(15 0 20 5 8)
+ SymbolLine(20 5 20 15 8)
+ SymbolLine(15 20 20 15 8)
+)
+Symbol('9' 12)
+(
+ SymbolLine(0 40 20 20 8)
+ SymbolLine(20 5 20 20 8)
+ SymbolLine(15 0 20 5 8)
+ SymbolLine(5 0 15 0 8)
+ SymbolLine(0 5 5 0 8)
+ SymbolLine(0 5 0 15 8)
+ SymbolLine(0 15 5 20 8)
+ SymbolLine(5 20 20 20 8)
+)
+Symbol(':' 12)
+(
+ SymbolLine(0 15 5 15 8)
+ SymbolLine(0 25 5 25 8)
+)
+Symbol(';' 12)
+(
+ SymbolLine(0 40 10 30 8)
+ SymbolLine(10 15 10 20 8)
+)
+Symbol('<' 12)
+(
+ SymbolLine(0 20 10 10 8)
+ SymbolLine(0 20 10 30 8)
+)
+Symbol('=' 12)
+(
+ SymbolLine(0 15 20 15 8)
+ SymbolLine(0 25 20 25 8)
+)
+Symbol('>' 12)
+(
+ SymbolLine(0 10 10 20 8)
+ SymbolLine(0 30 10 20 8)
+)
+Symbol('?' 12)
+(
+ SymbolLine(10 20 10 25 8)
+ SymbolLine(10 35 10 40 8)
+ SymbolLine(0 5 0 10 8)
+ SymbolLine(0 5 5 0 8)
+ SymbolLine(5 0 15 0 8)
+ SymbolLine(15 0 20 5 8)
+ SymbolLine(20 5 20 10 8)
+ SymbolLine(10 20 20 10 8)
+)
+Symbol('A' 12)
+(
+ SymbolLine(0 5 0 40 8)
+ SymbolLine(0 5 5 0 8)
+ SymbolLine(5 0 20 0 8)
+ SymbolLine(20 0 25 5 8)
+ SymbolLine(25 5 25 40 8)
+ SymbolLine(0 20 25 20 8)
+)
+Symbol('B' 12)
+(
+ SymbolLine(0 40 20 40 8)
+ SymbolLine(20 40 25 35 8)
+ SymbolLine(25 25 25 35 8)
+ SymbolLine(20 20 25 25 8)
+ SymbolLine(5 20 20 20 8)
+ SymbolLine(5 0 5 40 8)
+ SymbolLine(0 0 20 0 8)
+ SymbolLine(20 0 25 5 8)
+ SymbolLine(25 5 25 15 8)
+ SymbolLine(20 20 25 15 8)
+)
+Symbol('C' 12)
+(
+ SymbolLine(5 40 20 40 8)
+ SymbolLine(0 35 5 40 8)
+ SymbolLine(0 5 0 35 8)
+ SymbolLine(0 5 5 0 8)
+ SymbolLine(5 0 20 0 8)
+)
+Symbol('D' 12)
+(
+ SymbolLine(5 0 5 40 8)
+ SymbolLine(20 0 25 5 8)
+ SymbolLine(25 5 25 35 8)
+ SymbolLine(20 40 25 35 8)
+ SymbolLine(0 40 20 40 8)
+ SymbolLine(0 0 20 0 8)
+)
+Symbol('E' 12)
+(
+ SymbolLine(0 20 15 20 8)
+ SymbolLine(0 40 20 40 8)
+ SymbolLine(0 0 0 40 8)
+ SymbolLine(0 0 20 0 8)
+)
+Symbol('F' 12)
+(
+ SymbolLine(0 0 0 40 8)
+ SymbolLine(0 0 20 0 8)
+ SymbolLine(0 20 15 20 8)
+)
+Symbol('G' 12)
+(
+ SymbolLine(20 0 25 5 8)
+ SymbolLine(5 0 20 0 8)
+ SymbolLine(0 5 5 0 8)
+ SymbolLine(0 5 0 35 8)
+ SymbolLine(0 35 5 40 8)
+ SymbolLine(5 40 20 40 8)
+ SymbolLine(20 40 25 35 8)
+ SymbolLine(25 25 25 35 8)
+ SymbolLine(20 20 25 25 8)
+ SymbolLine(10 20 20 20 8)
+)
+Symbol('H' 12)
+(
+ SymbolLine(0 0 0 40 8)
+ SymbolLine(25 0 25 40 8)
+ SymbolLine(0 20 25 20 8)
+)
+Symbol('I' 12)
+(
+ SymbolLine(0 0 10 0 8)
+ SymbolLine(5 0 5 40 8)
+ SymbolLine(0 40 10 40 8)
+)
+Symbol('J' 12)
+(
+ SymbolLine(0 0 15 0 8)
+ SymbolLine(15 0 15 35 8)
+ SymbolLine(10 40 15 35 8)
+ SymbolLine(5 40 10 40 8)
+ SymbolLine(0 35 5 40 8)
+)
+Symbol('K' 12)
+(
+ SymbolLine(0 0 0 40 8)
+ SymbolLine(0 20 20 0 8)
+ SymbolLine(0 20 20 40 8)
+)
+Symbol('L' 12)
+(
+ SymbolLine(0 0 0 40 8)
+ SymbolLine(0 40 20 40 8)
+)
+Symbol('M' 12)
+(
+ SymbolLine(0 0 0 40 8)
+ SymbolLine(0 0 15 15 8)
+ SymbolLine(15 15 30 0 8)
+ SymbolLine(30 0 30 40 8)
+)
+Symbol('N' 12)
+(
+ SymbolLine(0 0 0 40 8)
+ SymbolLine(0 0 0 5 8)
+ SymbolLine(0 5 25 30 8)
+ SymbolLine(25 0 25 40 8)
+)
+Symbol('O' 12)
+(
+ SymbolLine(0 5 0 35 8)
+ SymbolLine(0 5 5 0 8)
+ SymbolLine(5 0 15 0 8)
+ SymbolLine(15 0 20 5 8)
+ SymbolLine(20 5 20 35 8)
+ SymbolLine(15 40 20 35 8)
+ SymbolLine(5 40 15 40 8)
+ SymbolLine(0 35 5 40 8)
+)
+Symbol('P' 12)
+(
+ SymbolLine(5 0 5 40 8)
+ SymbolLine(0 0 20 0 8)
+ SymbolLine(20 0 25 5 8)
+ SymbolLine(25 5 25 15 8)
+ SymbolLine(20 20 25 15 8)
+ SymbolLine(5 20 20 20 8)
+)
+Symbol('Q' 12)
+(
+ SymbolLine(0 5 0 35 8)
+ SymbolLine(0 5 5 0 8)
+ SymbolLine(5 0 15 0 8)
+ SymbolLine(15 0 20 5 8)
+ SymbolLine(20 5 20 35 8)
+ SymbolLine(15 40 20 35 8)
+ SymbolLine(5 40 15 40 8)
+ SymbolLine(0 35 5 40 8)
+ SymbolLine(10 30 20 40 8)
+)
+Symbol('R' 12)
+(
+ SymbolLine(0 0 20 0 8)
+ SymbolLine(20 0 25 5 8)
+ SymbolLine(25 5 25 15 8)
+ SymbolLine(20 20 25 15 8)
+ SymbolLine(5 20 20 20 8)
+ SymbolLine(5 0 5 40 8)
+ SymbolLine(5 20 25 40 8)
+)
+Symbol('S' 12)
+(
+ SymbolLine(20 0 25 5 8)
+ SymbolLine(5 0 20 0 8)
+ SymbolLine(0 5 5 0 8)
+ SymbolLine(0 5 0 15 8)
+ SymbolLine(0 15 5 20 8)
+ SymbolLine(5 20 20 20 8)
+ SymbolLine(20 20 25 25 8)
+ SymbolLine(25 25 25 35 8)
+ SymbolLine(20 40 25 35 8)
+ SymbolLine(5 40 20 40 8)
+ SymbolLine(0 35 5 40 8)
+)
+Symbol('T' 12)
+(
+ SymbolLine(0 0 20 0 8)
+ SymbolLine(10 0 10 40 8)
+)
+Symbol('U' 12)
+(
+ SymbolLine(0 0 0 35 8)
+ SymbolLine(0 35 5 40 8)
+ SymbolLine(5 40 15 40 8)
+ SymbolLine(15 40 20 35 8)
+ SymbolLine(20 0 20 35 8)
+)
+Symbol('V' 12)
+(
+ SymbolLine(0 0 0 30 8)
+ SymbolLine(0 30 10 40 8)
+ SymbolLine(10 40 20 30 8)
+ SymbolLine(20 0 20 30 8)
+)
+Symbol('W' 12)
+(
+ SymbolLine(0 0 0 40 8)
+ SymbolLine(0 40 15 25 8)
+ SymbolLine(15 25 30 40 8)
+ SymbolLine(30 0 30 40 8)
+)
+Symbol('X' 12)
+(
+ SymbolLine(0 0 0 5 8)
+ SymbolLine(0 5 25 30 8)
+ SymbolLine(25 30 25 40 8)
+ SymbolLine(0 30 0 40 8)
+ SymbolLine(0 30 25 5 8)
+ SymbolLine(25 0 25 5 8)
+)
+Symbol('Y' 12)
+(
+ SymbolLine(0 0 0 5 8)
+ SymbolLine(0 5 10 15 8)
+ SymbolLine(10 15 20 5 8)
+ SymbolLine(20 0 20 5 8)
+ SymbolLine(10 15 10 40 8)
+)
+Symbol('Z' 12)
+(
+ SymbolLine(0 0 25 0 8)
+ SymbolLine(25 0 25 5 8)
+ SymbolLine(0 30 25 5 8)
+ SymbolLine(0 30 0 40 8)
+ SymbolLine(0 40 25 40 8)
+)
+Symbol('[' 12)
+(
+ SymbolLine(0 0 5 0 8)
+ SymbolLine(0 0 0 40 8)
+ SymbolLine(0 40 5 40 8)
+)
+Symbol('\' 12)
+(
+ SymbolLine(0 5 30 35 8)
+)
+Symbol(']' 12)
+(
+ SymbolLine(0 0 5 0 8)
+ SymbolLine(5 0 5 40 8)
+ SymbolLine(0 40 5 40 8)
+)
+Symbol('^' 12)
+(
+ SymbolLine(0 5 5 0 8)
+ SymbolLine(5 0 10 5 8)
+)
+Symbol('_' 12)
+(
+ SymbolLine(0 40 20 40 8)
+)
+Symbol('a' 12)
+(
+ SymbolLine(15 20 20 25 8)
+ SymbolLine(5 20 15 20 8)
+ SymbolLine(0 25 5 20 8)
+ SymbolLine(0 25 0 35 8)
+ SymbolLine(0 35 5 40 8)
+ SymbolLine(20 20 20 35 8)
+ SymbolLine(20 35 25 40 8)
+ SymbolLine(5 40 15 40 8)
+ SymbolLine(15 40 20 35 8)
+)
+Symbol('b' 12)
+(
+ SymbolLine(0 0 0 40 8)
+ SymbolLine(0 35 5 40 8)
+ SymbolLine(5 40 15 40 8)
+ SymbolLine(15 40 20 35 8)
+ SymbolLine(20 25 20 35 8)
+ SymbolLine(15 20 20 25 8)
+ SymbolLine(5 20 15 20 8)
+ SymbolLine(0 25 5 20 8)
+)
+Symbol('c' 12)
+(
+ SymbolLine(5 20 20 20 8)
+ SymbolLine(0 25 5 20 8)
+ SymbolLine(0 25 0 35 8)
+ SymbolLine(0 35 5 40 8)
+ SymbolLine(5 40 20 40 8)
+)
+Symbol('d' 12)
+(
+ SymbolLine(20 0 20 40 8)
+ SymbolLine(15 40 20 35 8)
+ SymbolLine(5 40 15 40 8)
+ SymbolLine(0 35 5 40 8)
+ SymbolLine(0 25 0 35 8)
+ SymbolLine(0 25 5 20 8)
+ SymbolLine(5 20 15 20 8)
+ SymbolLine(15 20 20 25 8)
+)
+Symbol('e' 12)
+(
+ SymbolLine(5 40 20 40 8)
+ SymbolLine(0 35 5 40 8)
+ SymbolLine(0 25 0 35 8)
+ SymbolLine(0 25 5 20 8)
+ SymbolLine(5 20 15 20 8)
+ SymbolLine(15 20 20 25 8)
+ SymbolLine(0 30 20 30 8)
+ SymbolLine(20 30 20 25 8)
+)
+Symbol('f' 10)
+(
+ SymbolLine(5 5 5 40 8)
+ SymbolLine(5 5 10 0 8)
+ SymbolLine(10 0 15 0 8)
+ SymbolLine(0 20 10 20 8)
+)
+Symbol('g' 12)
+(
+ SymbolLine(15 20 20 25 8)
+ SymbolLine(5 20 15 20 8)
+ SymbolLine(0 25 5 20 8)
+ SymbolLine(0 25 0 35 8)
+ SymbolLine(0 35 5 40 8)
+ SymbolLine(5 40 15 40 8)
+ SymbolLine(15 40 20 35 8)
+ SymbolLine(0 50 5 55 8)
+ SymbolLine(5 55 15 55 8)
+ SymbolLine(15 55 20 50 8)
+ SymbolLine(20 20 20 50 8)
+)
+Symbol('h' 12)
+(
+ SymbolLine(0 0 0 40 8)
+ SymbolLine(0 25 5 20 8)
+ SymbolLine(5 20 15 20 8)
+ SymbolLine(15 20 20 25 8)
+ SymbolLine(20 25 20 40 8)
+)
+Symbol('i' 10)
+(
+ SymbolLine(0 10 0 15 8)
+ SymbolLine(0 25 0 40 8)
+)
+Symbol('j' 10)
+(
+ SymbolLine(5 10 5 15 8)
+ SymbolLine(5 25 5 50 8)
+ SymbolLine(0 55 5 50 8)
+)
+Symbol('k' 12)
+(
+ SymbolLine(0 0 0 40 8)
+ SymbolLine(0 25 15 40 8)
+ SymbolLine(0 25 10 15 8)
+)
+Symbol('l' 10)
+(
+ SymbolLine(0 0 0 35 8)
+ SymbolLine(0 35 5 40 8)
+)
+Symbol('m' 12)
+(
+ SymbolLine(5 25 5 40 8)
+ SymbolLine(5 25 10 20 8)
+ SymbolLine(10 20 15 20 8)
+ SymbolLine(15 20 20 25 8)
+ SymbolLine(20 25 20 40 8)
+ SymbolLine(20 25 25 20 8)
+ SymbolLine(25 20 30 20 8)
+ SymbolLine(30 20 35 25 8)
+ SymbolLine(35 25 35 40 8)
+ SymbolLine(0 20 5 25 8)
+)
+Symbol('n' 12)
+(
+ SymbolLine(5 25 5 40 8)
+ SymbolLine(5 25 10 20 8)
+ SymbolLine(10 20 15 20 8)
+ SymbolLine(15 20 20 25 8)
+ SymbolLine(20 25 20 40 8)
+ SymbolLine(0 20 5 25 8)
+)
+Symbol('o' 12)
+(
+ SymbolLine(0 25 0 35 8)
+ SymbolLine(0 25 5 20 8)
+ SymbolLine(5 20 15 20 8)
+ SymbolLine(15 20 20 25 8)
+ SymbolLine(20 25 20 35 8)
+ SymbolLine(15 40 20 35 8)
+ SymbolLine(5 40 15 40 8)
+ SymbolLine(0 35 5 40 8)
+)
+Symbol('p' 12)
+(
+ SymbolLine(5 25 5 55 8)
+ SymbolLine(0 20 5 25 8)
+ SymbolLine(5 25 10 20 8)
+ SymbolLine(10 20 20 20 8)
+ SymbolLine(20 20 25 25 8)
+ SymbolLine(25 25 25 35 8)
+ SymbolLine(20 40 25 35 8)
+ SymbolLine(10 40 20 40 8)
+ SymbolLine(5 35 10 40 8)
+)
+Symbol('q' 12)
+(
+ SymbolLine(20 25 20 55 8)
+ SymbolLine(15 20 20 25 8)
+ SymbolLine(5 20 15 20 8)
+ SymbolLine(0 25 5 20 8)
+ SymbolLine(0 25 0 35 8)
+ SymbolLine(0 35 5 40 8)
+ SymbolLine(5 40 15 40 8)
+ SymbolLine(15 40 20 35 8)
+)
+Symbol('r' 12)
+(
+ SymbolLine(5 25 5 40 8)
+ SymbolLine(5 25 10 20 8)
+ SymbolLine(10 20 20 20 8)
+ SymbolLine(0 20 5 25 8)
+)
+Symbol('s' 12)
+(
+ SymbolLine(5 40 20 40 8)
+ SymbolLine(20 40 25 35 8)
+ SymbolLine(20 30 25 35 8)
+ SymbolLine(5 30 20 30 8)
+ SymbolLine(0 25 5 30 8)
+ SymbolLine(0 25 5 20 8)
+ SymbolLine(5 20 20 20 8)
+ SymbolLine(20 20 25 25 8)
+ SymbolLine(0 35 5 40 8)
+)
+Symbol('t' 10)
+(
+ SymbolLine(5 0 5 35 8)
+ SymbolLine(5 35 10 40 8)
+ SymbolLine(0 15 10 15 8)
+)
+Symbol('u' 12)
+(
+ SymbolLine(0 20 0 35 8)
+ SymbolLine(0 35 5 40 8)
+ SymbolLine(5 40 15 40 8)
+ SymbolLine(15 40 20 35 8)
+ SymbolLine(20 20 20 35 8)
+)
+Symbol('v' 12)
+(
+ SymbolLine(0 20 0 30 8)
+ SymbolLine(0 30 10 40 8)
+ SymbolLine(10 40 20 30 8)
+ SymbolLine(20 20 20 30 8)
+)
+Symbol('w' 12)
+(
+ SymbolLine(0 20 0 35 8)
+ SymbolLine(0 35 5 40 8)
+ SymbolLine(5 40 10 40 8)
+ SymbolLine(10 40 15 35 8)
+ SymbolLine(15 20 15 35 8)
+ SymbolLine(15 35 20 40 8)
+ SymbolLine(20 40 25 40 8)
+ SymbolLine(25 40 30 35 8)
+ SymbolLine(30 20 30 35 8)
+)
+Symbol('x' 12)
+(
+ SymbolLine(0 20 20 40 8)
+ SymbolLine(0 40 20 20 8)
+)
+Symbol('y' 12)
+(
+ SymbolLine(0 20 0 35 8)
+ SymbolLine(0 35 5 40 8)
+ SymbolLine(20 20 20 50 8)
+ SymbolLine(15 55 20 50 8)
+ SymbolLine(5 55 15 55 8)
+ SymbolLine(0 50 5 55 8)
+ SymbolLine(5 40 15 40 8)
+ SymbolLine(15 40 20 35 8)
+)
+Symbol('z' 12)
+(
+ SymbolLine(0 20 20 20 8)
+ SymbolLine(0 40 20 20 8)
+ SymbolLine(0 40 20 40 8)
+)
+Symbol('{' 12)
+(
+ SymbolLine(5 5 10 0 8)
+ SymbolLine(5 5 5 15 8)
+ SymbolLine(0 20 5 15 8)
+ SymbolLine(0 20 5 25 8)
+ SymbolLine(5 25 5 35 8)
+ SymbolLine(5 35 10 40 8)
+)
+Symbol('|' 12)
+(
+ SymbolLine(0 0 0 40 8)
+)
+Symbol('}' 12)
+(
+ SymbolLine(0 0 5 5 8)
+ SymbolLine(5 5 5 15 8)
+ SymbolLine(5 15 10 20 8)
+ SymbolLine(5 25 10 20 8)
+ SymbolLine(5 25 5 35 8)
+ SymbolLine(0 40 5 35 8)
+)
+Symbol('~' 12)
+(
+ SymbolLine(0 25 5 20 8)
+ SymbolLine(5 20 10 20 8)
+ SymbolLine(10 20 15 25 8)
+ SymbolLine(15 25 20 25 8)
+ SymbolLine(20 25 25 20 8)
+)
+Via(2075 1455 50 30 28 "" 0x12120002)
+Via(1790 1570 50 30 28 "" 0x12120002)
+Via(1450 1575 50 30 28 "" 0x12120002)
+Via(1070 1265 50 30 28 "" 0x00000002)
+Via(1520 2495 50 30 28 "" 0x00000002)
+Via(465 3015 110 30 110 "" 0x0000000a)
+Via(1605 2660 50 30 28 "" 0x00000002)
+Via(1985 1300 50 30 28 "" 0x00000002)
+Via(465 605 110 30 110 "" 0x0000000a)
+Via(2965 595 110 30 110 "" 0x0000000a)
+Via(2965 3005 110 30 110 "" 0x0000000a)
+Via(1185 2660 50 30 28 "" 0x00000002)
+
+Element(0x00000000 "3 TERM BLOCK" "J2" "DK ED1602-ND" 1695 2925 -590 76 0 150 0x00000000)
+(
+ Pin(0 0 110 30 140 48 "1" "1" 0x00000001)
+ Pin(-194 0 110 30 140 48 "2" "2" 0x00000001)
+ Pin(-388 0 110 30 140 48 "3" "3" 0x00000001)
+ ElementLine (-388 160 -388 140 10)
+ ElementLine (-194 160 -194 140 10)
+ ElementLine (0 160 0 140 10)
+ ElementLine (81 -170 101 -170 10)
+ ElementLine (81 -190 81 -170 10)
+ ElementLine (101 -190 81 -190 10)
+ ElementLine (-509 -170 -489 -170 10)
+ ElementLine (-509 -190 -509 -170 10)
+ ElementLine (-489 -190 -509 -190 10)
+ ElementLine (101 -200 101 160 10)
+ ElementLine (-489 -200 101 -200 10)
+ ElementLine (-489 160 -489 -200 10)
+ ElementLine (101 160 -489 160 10)
+ )
+
+Element(0x00000000 "RS422 Transciever" "U6" "LTC490" 1005 895 -505 -55 0 150 0x00000000)
+(
+ Pin(0 0 60 30 90 28 "Vcc" "1" 0x00000101)
+ Pin(0 -100 60 30 90 28 "R" "2" 0x00000001)
+ Pin(0 -200 60 30 90 28 "D" "3" 0x00000001)
+ Pin(0 -300 60 30 90 28 "GND" "4" 0x00000001)
+ Pin(-300 -300 60 30 90 28 "Y" "5" 0x00000001)
+ Pin(-300 -200 60 30 90 28 "Z" "6" 0x00000001)
+ Pin(-300 -100 60 30 90 28 "B" "7" 0x00000001)
+ Pin(-300 0 60 30 90 28 "A" "8" 0x00000001)
+ ElementLine (50 50 50 -350 10)
+ ElementLine (50 -350 -350 -350 10)
+ ElementLine (-350 -350 -350 50 10)
+ ElementLine (50 50 -100 50 10)
+ ElementLine (-200 50 -350 50 10)
+ ElementArc (-150 50 50 50 180 180 10)
+ )
+
+Element(0x00000000 "PIC16C54A" "U5" "PIC16C54" 1195 860 465 80 0 150 0x00000000)
+(
+ Pin(0 0 60 30 90 28 "RA2" "1" 0x00000101)
+ Pin(100 0 60 30 90 28 "RA3" "2" 0x00000001)
+ Pin(200 0 60 30 90 28 "RTCC" "3" 0x00000001)
+ Pin(300 0 60 30 90 28 "/MCLR" "4" 0x00000001)
+ Pin(400 0 60 30 90 28 "Vss" "5" 0x00000001)
+ Pin(500 0 60 30 90 28 "RB0" "6" 0x00000001)
+ Pin(600 0 60 30 90 28 "RB1" "7" 0x00000001)
+ Pin(700 0 60 30 90 28 "RB2" "8" 0x00000001)
+ Pin(800 0 60 30 90 28 "RB3" "9" 0x00000001)
+ Pin(800 -300 60 30 90 28 "RB4" "10" 0x00000001)
+ Pin(700 -300 60 30 90 28 "RB5" "11" 0x00000001)
+ Pin(600 -300 60 30 90 28 "RB6" "12" 0x00000001)
+ Pin(500 -300 60 30 90 28 "RB7" "13" 0x00000001)
+ Pin(400 -300 60 30 90 28 "Vdd" "14" 0x00000001)
+ Pin(300 -300 60 30 90 28 "OSC2/CLKOUT" "15" 0x00000001)
+ Pin(200 -300 60 30 90 28 "OSC1/CLKIN" "16" 0x00000001)
+ Pin(100 -300 60 30 90 28 "RA0" "17" 0x00000001)
+ Pin(0 -300 60 30 90 28 "RA1" "18" 0x00000001)
+ ElementLine (-50 50 850 50 10)
+ ElementLine (850 50 850 -350 10)
+ ElementLine (850 -350 -50 -350 10)
+ ElementLine (-50 50 -50 -100 10)
+ ElementLine (-50 -200 -50 -350 10)
+ ElementArc (-50 -150 50 50 90 180 10)
+ )
+
+Element(0x00000000 "SMD Cap" "C17" "" 2155 815 -90 -329 0 150 0x00000000)
+(
+ Pin(0 0 80 30 110 35 "1" "1" 0x00000001)
+ Pin(0 -200 80 30 110 35 "2" "2" 0x00000001)
+ ElementLine (-50 50 50 50 10)
+ ElementLine (50 50 50 -250 10)
+ ElementLine (50 -250 -50 -250 10)
+ ElementLine (-50 -250 -50 50 10)
+ )
+
+Element(0x00000000 "SMD 0805" "C13" "" 2525 1510 -30 45 0 150 0x00000000)
+(
+ Pad(0 0 0 0 60 30 90 "1" "1" 0x00000100)
+ Pad(0 -90 0 -90 60 30 90 "2" "2" 0x00000100)
+ ElementLine (-35 -125 -35 35 10)
+ ElementLine (35 -125 -35 -125 10)
+ ElementLine (35 35 35 -125 10)
+ ElementLine (-35 35 35 35 10)
+ )
+
+Element(0x00000010 "SMD 0805" "C16" "" 1080 1355 -15 -115 0 150 0x00000000)
+(
+ Pad(0 0 0 0 60 30 90 "1" "1" 0x00000100)
+ Pad(90 0 90 0 60 30 90 "2" "2" 0x00000100)
+ ElementLine (125 -35 -35 -35 10)
+ ElementLine (125 35 125 -35 10)
+ ElementLine (-35 35 125 35 10)
+ ElementLine (-35 -35 -35 35 10)
+ )
+
+Element(0x00000000 "SMD 0805" "C14" "" 1175 1690 -195 20 0 150 0x00000000)
+(
+ Pad(0 0 0 0 60 30 90 "1" "1" 0x00000100)
+ Pad(0 90 0 90 60 30 90 "2" "2" 0x00000100)
+ ElementLine (35 125 35 -35 10)
+ ElementLine (-35 125 35 125 10)
+ ElementLine (-35 -35 -35 125 10)
+ ElementLine (35 -35 -35 -35 10)
+ )
+
+Element(0x00000000 "SMD Cap" "C15" "" 1280 1785 65 -174 0 150 0x00000000)
+(
+ Pin(0 0 80 30 110 35 "1" "1" 0x02000001)
+ Pin(0 -200 80 30 110 35 "2" "2" 0x00000001)
+ ElementLine (-50 50 50 50 10)
+ ElementLine (50 50 50 -250 10)
+ ElementLine (50 -250 -50 -250 10)
+ ElementLine (-50 -250 -50 50 10)
+ )
+
+Element(0x00000010 "SMD 0805" "C10" "" 2095 1310 -190 -60 0 150 0x00000000)
+(
+ Pad(0 0 0 0 60 30 90 "1" "1" 0x00000100)
+ Pad(90 0 90 0 60 30 90 "2" "2" 0x00000100)
+ ElementLine (125 -35 -35 -35 10)
+ ElementLine (125 35 125 -35 10)
+ ElementLine (-35 35 125 35 10)
+ ElementLine (-35 -35 -35 35 10)
+ )
+
+Element(0x00000000 "SMD Cap" "C12" "" 2345 1320 -35 -129 0 150 0x00000000)
+(
+ Pin(0 0 80 30 110 35 "1" "1" 0x00000001)
+ Pin(200 0 80 30 110 35 "2" "2" 0x02020001)
+ ElementLine (-50 -50 -50 50 10)
+ ElementLine (-50 50 250 50 10)
+ ElementLine (250 50 250 -50 10)
+ ElementLine (250 -50 -50 -50 10)
+ )
+
+Element(0x00000000 "R 0.25W" "R13" "100" 1130 1435 230 65 0 150 0x00000000)
+(
+ Pin(0 0 60 30 90 28 "1" "1" 0x00000101)
+ Pin(400 0 60 30 90 28 "2" "2" 0x10000001)
+ ElementLine (100 -50 300 -50 10)
+ ElementLine (300 -50 300 50 10)
+ ElementLine (300 50 100 50 10)
+ ElementLine (100 50 100 -50 10)
+ ElementLine (40 0 100 0 10)
+ ElementLine (300 0 360 0 10)
+ )
+
+Element(0x00000000 "R 0.25W" "R14" "100" 1105 1075 -265 60 0 150 0x00000000)
+(
+ Pin(0 0 60 30 90 28 "1" "1" 0x00000001)
+ Pin(-400 0 60 30 90 28 "2" "2" 0x00000001)
+ ElementLine (-100 50 -300 50 10)
+ ElementLine (-300 50 -300 -50 10)
+ ElementLine (-300 -50 -100 -50 10)
+ ElementLine (-100 -50 -100 50 10)
+ ElementLine (-40 0 -100 0 10)
+ ElementLine (-300 0 -360 0 10)
+ )
+
+Element(0x00000000 "R 0.5W" "R11" "" 2815 1700 60 -90 0 150 0x00000000)
+(
+ Pin(0 0 85 30 115 48 "1" "1" 0x00000101)
+ Pin(0 -800 85 30 115 48 "2" "2" 0x00000001)
+ ElementLine (0 -60 0 -115 10)
+ ElementLine (-115 -115 115 -115 10)
+ ElementLine (115 -115 115 -685 10)
+ ElementLine (115 -685 -115 -685 10)
+ ElementLine (-115 -685 -115 -115 10)
+ ElementLine (0 -685 0 -750 10)
+ )
+
+Element(0x00000000 "TK11950" "U3" "5.0V" 2235 1510 -139 -2 0 150 0x00000000)
+(
+ Pad(-7 0 8 0 24 30 54 "NOISE BYPASS" "1" 0x00000100)
+ Pad(-7 37 8 37 24 30 54 "CONTROL" "2" 0x00000100)
+ Pad(-7 75 8 75 24 30 54 "RESET OUT" "3" 0x00000100)
+ Pad(119 75 134 75 24 30 54 "VO" "4" 0x00000100)
+ Pad(119 37 134 37 24 30 54 "GND" "5" 0x00000100)
+ Pad(119 0 134 0 24 30 54 "VIN" "6" 0x00000100)
+ ElementLine (0 -22 0 -34 10)
+ ElementLine (0 -34 132 -34 10)
+ ElementLine (132 -34 132 -22 10)
+ ElementLine (0 96 0 108 10)
+ ElementLine (0 108 132 108 10)
+ ElementLine (132 108 132 96 10)
+ ElementLine (13 -24 119 -24 10)
+ )
+
+Element(0x00000000 "TK11950" "U4" "5.0V" 1180 1590 -254 -132 0 150 0x00000000)
+(
+ Pad(7 0 -8 0 24 30 54 "NOISE BYPASS" "1" 0x00000100)
+ Pad(7 -37 -8 -37 24 30 54 "CONTROL" "2" 0x00000100)
+ Pad(7 -75 -8 -75 24 30 54 "RESET OUT" "3" 0x00000100)
+ Pad(-119 -75 -134 -75 24 30 54 "VO" "4" 0x00000100)
+ Pad(-119 -37 -134 -37 24 30 54 "GND" "5" 0x00000100)
+ Pad(-119 0 -134 0 24 30 54 "VIN" "6" 0x00000100)
+ ElementLine (0 22 0 34 10)
+ ElementLine (0 34 -132 34 10)
+ ElementLine (-132 34 -132 22 10)
+ ElementLine (0 -96 0 -108 10)
+ ElementLine (0 -108 -132 -108 10)
+ ElementLine (-132 -108 -132 -96 10)
+ ElementLine (-13 24 -119 24 10)
+ )
+
+Element(0x00000000 "SMD 0805" "C5" "" 1495 1315 -225 -30 0 150 0x00000000)
+(
+ Pad(0 0 0 0 60 30 90 "1" "1" 0x00000100)
+ Pad(-90 0 -90 0 60 30 90 "2" "2" 0x00000100)
+ ElementLine (-125 35 35 35 10)
+ ElementLine (-125 -35 -125 35 10)
+ ElementLine (35 -35 -125 -35 10)
+ ElementLine (35 35 35 -35 10)
+ )
+
+Element(0x00000010 "SMD 0805" "C11" "" 2270 1420 -260 -30 0 150 0x00000000)
+(
+ Pad(0 0 0 0 60 30 90 "1" "1" 0x00000100)
+ Pad(-90 0 -90 0 60 30 90 "2" "2" 0x00000100)
+ ElementLine (-125 35 35 35 10)
+ ElementLine (-125 -35 -125 35 10)
+ ElementLine (35 -35 -125 -35 10)
+ ElementLine (35 35 35 -35 10)
+ )
+
+Element(0x00000000 "SMD Cap" "C9" "" 2030 1185 -145 -40 0 150 0x00000000)
+(
+ Pin(0 0 80 30 110 35 "1" "1" 0x20200001)
+ Pin(200 0 80 30 110 35 "2" "2" 0x02020001)
+ ElementLine (0 45 0 50 10)
+ ElementLine (0 50 200 50 10)
+ ElementLine (200 50 200 45 10)
+ ElementLine (200 -45 200 -50 10)
+ ElementLine (200 -50 0 -50 10)
+ ElementLine (0 -50 0 -45 10)
+ )
+
+Element(0x00000000 "R 0.25W" "R7" "100" 1655 2065 150 -30 0 150 0x00000000)
+(
+ Pin(0 0 60 30 90 28 "1" "1" 0x02000001)
+ Pin(400 0 60 30 90 28 "2" "2" 0x02020001)
+ ElementLine (100 -50 300 -50 10)
+ ElementLine (300 -50 300 50 10)
+ ElementLine (300 50 100 50 10)
+ ElementLine (100 50 100 -50 10)
+ ElementLine (40 0 100 0 10)
+ ElementLine (300 0 360 0 10)
+ )
+
+Element(0x00000000 "SMD Cap" "C8" "" 2030 1075 65 -124 0 150 0x00000000)
+(
+ Pin(0 0 80 30 110 35 "1" "1" 0x20200001)
+ Pin(200 0 80 30 110 35 "2" "2" 0x02020001)
+ ElementLine (-50 -50 -50 50 10)
+ ElementLine (-50 50 250 50 10)
+ ElementLine (250 50 250 -50 10)
+ ElementLine (250 -50 -50 -50 10)
+ )
+
+Element(0x00000000 "SMD Cap" "C7" "" 1530 1075 -370 -144 0 150 0x00000000)
+(
+ Pin(0 0 80 30 110 35 "1" "1" 0x20200001)
+ Pin(-200 0 80 30 110 35 "2" "2" 0x10100001)
+ ElementLine (50 50 50 -50 10)
+ ElementLine (50 -50 -250 -50 10)
+ ElementLine (-250 -50 -250 50 10)
+ ElementLine (-250 50 50 50 10)
+ )
+
+Element(0x00000000 "SMD Cap" "C2" "" 1945 1845 65 -19 0 150 0x00000000)
+(
+ Pin(0 0 80 30 110 35 "1" "1" 0x02000101)
+ Pin(-200 0 80 30 110 35 "2" "2" 0x02000001)
+ ElementLine (50 50 50 -50 10)
+ ElementLine (50 -50 -250 -50 10)
+ ElementLine (-250 -50 -250 50 10)
+ ElementLine (-250 50 50 50 10)
+ )
+
+Element(0x00000000 "SMD Cap" "C6" "" 1530 1185 -335 -30 0 150 0x00000000)
+(
+ Pin(0 0 80 30 110 35 "1" "1" 0x20200001)
+ Pin(-200 0 80 30 110 35 "2" "2" 0x10100001)
+ ElementLine (0 -45 0 -50 10)
+ ElementLine (0 -50 -200 -50 10)
+ ElementLine (-200 -50 -200 -45 10)
+ ElementLine (-200 45 -200 50 10)
+ ElementLine (-200 50 0 50 10)
+ ElementLine (0 50 0 45 10)
+ )
+
+Element(0x00000000 "SMD Cap" "C1" "" 1490 1950 -40 71 0 150 0x00000000)
+(
+ Pin(0 0 80 30 110 35 "1" "1" 0x00000101)
+ Pin(0 -200 80 30 110 35 "2" "2" 0x02000001)
+ ElementLine (-50 50 50 50 10)
+ ElementLine (50 50 50 -250 10)
+ ElementLine (50 -250 -50 -250 10)
+ ElementLine (-50 -250 -50 50 10)
+ )
+
+Element(0x00000000 "R 0.25W" "R6" "100" 2375 1680 65 115 0 150 0x00000000)
+(
+ Pin(0 0 60 30 90 28 "1" "1" 0x02000101)
+ Pin(0 400 60 30 90 28 "2" "2" 0x02000001)
+ ElementLine (50 100 50 300 10)
+ ElementLine (50 300 -50 300 10)
+ ElementLine (-50 300 -50 100 10)
+ ElementLine (-50 100 50 100 10)
+ ElementLine (0 40 0 100 10)
+ ElementLine (0 300 0 360 10)
+ )
+
+Element(0x00000000 "R 0.25W" "R8" "100" 2270 1680 -30 245 1 150 0x00000000)
+(
+ Pin(0 0 60 30 90 28 "1" "1" 0x02000101)
+ Pin(0 400 60 30 90 28 "2" "2" 0x02000001)
+ ElementLine (50 100 50 300 10)
+ ElementLine (50 300 -50 300 10)
+ ElementLine (-50 300 -50 100 10)
+ ElementLine (-50 100 50 100 10)
+ ElementLine (0 40 0 100 10)
+ ElementLine (0 300 0 360 10)
+ )
+
+Element(0x00000000 "R 0.25W" "R5" "100" 1375 1750 -170 175 0 150 0x00000000)
+(
+ Pin(0 0 60 30 90 28 "1" "1" 0x00000101)
+ Pin(0 400 60 30 90 28 "2" "2" 0x00000001)
+ ElementLine (50 100 50 300 10)
+ ElementLine (50 300 -50 300 10)
+ ElementLine (-50 300 -50 100 10)
+ ElementLine (-50 100 50 100 10)
+ ElementLine (0 40 0 100 10)
+ ElementLine (0 300 0 360 10)
+ )
+
+Element(0x00000000 "R 0.25W" "R9" "100" 1655 2170 125 -25 0 150 0x00000000)
+(
+ Pin(0 0 60 30 90 28 "1" "1" 0x02000001)
+ Pin(400 0 60 30 90 28 "2" "2" 0x02020001)
+ ElementLine (100 -50 300 -50 10)
+ ElementLine (300 -50 300 50 10)
+ ElementLine (300 50 100 50 10)
+ ElementLine (100 50 100 -50 10)
+ ElementLine (40 0 100 0 10)
+ ElementLine (300 0 360 0 10)
+ )
+
+Element(0x00000000 "R 0.25W" "R10" "100" 2160 1675 -30 275 1 150 0x00000000)
+(
+ Pin(0 0 60 30 90 28 "1" "1" 0x02000101)
+ Pin(0 400 60 30 90 28 "2" "2" 0x02020001)
+ ElementLine (50 100 50 300 10)
+ ElementLine (50 300 -50 300 10)
+ ElementLine (-50 300 -50 100 10)
+ ElementLine (-50 100 50 100 10)
+ ElementLine (0 40 0 100 10)
+ ElementLine (0 300 0 360 10)
+ )
+
+Element(0x00000000 "ADC12138CIMSA" "U2" "ADC12138" 1630 1690 105 -449 0 150 0x00000000)
+(
+ Pad(0 30 0 -30 12 30 42 "CH0" "1" 0x00000100)
+ Pad(26 30 26 -30 12 30 42 "CH1" "2" 0x00000100)
+ Pad(51 30 51 -30 12 30 42 "CH2" "3" 0x00000100)
+ Pad(77 30 77 -30 12 30 42 "CH3" "4" 0x00000100)
+ Pad(102 30 102 -30 12 30 42 "CH4" "5" 0x00000100)
+ Pad(128 30 128 -30 12 30 42 "CH5" "6" 0x00000100)
+ Pad(154 30 154 -30 12 30 42 "CH6" "7" 0x00000100)
+ Pad(179 30 179 -30 12 30 42 "CH7" "8" 0x00000100)
+ Pad(205 30 205 -30 12 30 42 "COM" "9" 0x00000100)
+ Pad(230 30 230 -30 12 30 42 "MuOut1" "10" 0x00000100)
+ Pad(256 30 256 -30 12 30 42 "A/Din1" "11" 0x00000100)
+ Pad(281 30 281 -30 12 30 42 "MuxOut2" "12" 0x00000100)
+ Pad(307 30 307 -30 12 30 42 "A/Din2" "13" 0x00000100)
+ Pad(333 30 333 -30 12 30 42 "DGND" "14" 0x00000100)
+ Pad(333 -350 333 -290 12 30 42 "VA+" "15" 0x00000100)
+ Pad(307 -350 307 -290 12 30 42 "Vref-" "16" 0x00000100)
+ Pad(281 -350 281 -290 12 30 42 "Vref+" "17" 0x00000100)
+ Pad(256 -350 256 -290 12 30 42 "AGND" "18" 0x00000100)
+ Pad(230 -350 230 -290 12 30 42 "PD" "19" 0x00000100)
+ Pad(205 -350 205 -290 12 30 42 "EOC" "20" 0x00000100)
+ Pad(179 -350 179 -290 12 30 42 "~CONV" "21" 0x00000100)
+ Pad(154 -350 154 -290 12 30 42 "~CS" "22" 0x00000100)
+ Pad(128 -350 128 -290 12 30 42 "DO" "23" 0x00000100)
+ Pad(102 -350 102 -290 12 30 42 "DI" "24" 0x00000100)
+ Pad(77 -350 77 -290 12 30 42 "SCLK" "25" 0x00000100)
+ Pad(51 -350 51 -290 12 30 42 "CCLK" "26" 0x00000100)
+ Pad(26 -350 26 -290 12 30 42 "~DOR" "27" 0x00000100)
+ Pad(0 -350 0 -290 12 30 42 "VD+" "28" 0x00000100)
+ ElementLine (0 -70 0 -70 30)
+ ElementLine (-12 -54 -37 -54 10)
+ ElementLine (-37 -54 -37 -266 10)
+ ElementLine (-37 -266 -12 -266 10)
+ ElementLine (343 -54 370 -54 10)
+ ElementLine (370 -54 370 -266 10)
+ ElementLine (370 -266 343 -266 10)
+ )
+
+Element(0x00000000 "R 0.25W" "R4" "100" 1615 1955 130 -35 0 150 0x00000000)
+(
+ Pin(0 0 60 30 90 28 "1" "1" 0x00000101)
+ Pin(400 0 60 30 90 28 "2" "2" 0x02000001)
+ ElementLine (100 -50 300 -50 10)
+ ElementLine (300 -50 300 50 10)
+ ElementLine (300 50 100 50 10)
+ ElementLine (100 50 100 -50 10)
+ ElementLine (40 0 100 0 10)
+ ElementLine (300 0 360 0 10)
+ )
+
+Element(0x00000010 "SMD 0805" "C4" "" 2070 2390 -25 -180 0 115 0x00000000)
+(
+ Pad(0 0 0 0 60 30 90 "1" "1" 0x00000100)
+ Pad(0 -90 0 -90 60 30 90 "2" "2" 0x00000100)
+ ElementLine (-35 -125 -35 35 10)
+ ElementLine (35 -125 -35 -125 10)
+ ElementLine (35 35 35 -125 10)
+ ElementLine (-35 35 35 35 10)
+ )
+
+Element(0x00000000 "R 0.25W" "R1" "100" 2180 2625 -35 -145 1 150 0x00000000)
+(
+ Pin(0 0 60 30 90 28 "1" "1" 0x00000101)
+ Pin(0 -400 60 30 90 28 "2" "2" 0x02000001)
+ ElementLine (-50 -100 -50 -300 10)
+ ElementLine (-50 -300 50 -300 10)
+ ElementLine (50 -300 50 -100 10)
+ ElementLine (50 -100 -50 -100 10)
+ ElementLine (0 -40 0 -100 10)
+ ElementLine (0 -300 0 -360 10)
+ )
+
+Element(0x00000000 "R 0.25W" "R2" "100" 2400 2625 60 -100 0 150 0x00000000)
+(
+ Pin(0 0 60 30 90 28 "1" "1" 0x00000101)
+ Pin(0 -400 60 30 90 28 "2" "2" 0x02000001)
+ ElementLine (-50 -100 -50 -300 10)
+ ElementLine (-50 -300 50 -300 10)
+ ElementLine (50 -300 50 -100 10)
+ ElementLine (50 -100 -50 -100 10)
+ ElementLine (0 -40 0 -100 10)
+ ElementLine (0 -300 0 -360 10)
+ )
+
+Element(0x00000000 "LM13700" "U1" "LM13700" 1955 2285 -475 -130 0 150 0x00000000)
+(
+ Pin(0 0 60 30 90 28 "Iabc1" "1" 0x02000101)
+ Pin(-100 0 60 30 90 28 "Dbias1" "2" 0x00000001)
+ Pin(-200 0 60 30 90 28 "In+1" "3" 0x00000001)
+ Pin(-300 0 60 30 90 28 "In-1" "4" 0x00000001)
+ Pin(-400 0 60 30 90 28 "Out1" "5" 0x00000001)
+ Pin(-500 0 60 30 90 28 "V-" "6" 0x00000001)
+ Pin(-600 0 60 30 90 28 "BufIn1" "7" 0x00000001)
+ Pin(-700 0 60 30 90 28 "BufOut1" "8" 0x00000001)
+ Pin(-700 300 60 30 90 28 "BufOut2" "9" 0x00000001)
+ Pin(-600 300 60 30 90 28 "BufIn2" "10" 0x00000001)
+ Pin(-500 300 60 30 90 28 "V+" "11" 0x00000001)
+ Pin(-400 300 60 30 90 28 "Out2" "12" 0x00000001)
+ Pin(-300 300 60 30 90 28 "In-2" "13" 0x00000001)
+ Pin(-200 300 60 30 90 28 "In+2" "14" 0x00000001)
+ Pin(-100 300 60 30 90 28 "Dbias2" "15" 0x00000001)
+ Pin(0 300 60 30 90 28 "Iabc2" "16" 0x00000001)
+ ElementLine (50 -50 -750 -50 10)
+ ElementLine (-750 -50 -750 350 10)
+ ElementLine (-750 350 50 350 10)
+ ElementLine (50 -50 50 100 10)
+ ElementLine (50 200 50 350 10)
+ ElementArc (50 150 50 50 270 180 10)
+ )
+
+Element(0x00000000 "R 0.25W" "R3" "100" 2290 2625 -30 -135 1 150 0x00000000)
+(
+ Pin(0 0 60 30 90 28 "1" "1" 0x00000101)
+ Pin(0 -400 60 30 90 28 "2" "2" 0x02000001)
+ ElementLine (-50 -100 -50 -300 10)
+ ElementLine (-50 -300 50 -300 10)
+ ElementLine (50 -300 50 -100 10)
+ ElementLine (50 -100 -50 -100 10)
+ ElementLine (0 -40 0 -100 10)
+ ElementLine (0 -300 0 -360 10)
+ )
+
+Element(0x00000000 "SMD 0805" "C3" "" 2075 2510 -40 140 0 150 0x00000000)
+(
+ Pad(0 0 0 0 60 30 90 "1" "1" 0x00000100)
+ Pad(0 90 0 90 60 30 90 "2" "2" 0x00000100)
+ ElementLine (35 125 35 -35 10)
+ ElementLine (-35 125 35 125 10)
+ ElementLine (-35 -35 -35 125 10)
+ ElementLine (35 -35 -35 -35 10)
+ )
+
+Element(0x00000000 "CTX169" "X1" "20 MHz" 2330 910 425 -215 0 150 0x00000000)
+(
+ Pin(0 -60 60 30 90 28 "NC" "1" 0x00000101)
+ Pin(300 -60 60 30 90 28 "GND" "2" 0x00000001)
+ Pin(300 -360 60 30 90 28 "OUT" "3" 0x00000001)
+ Pin(0 -360 60 30 90 28 "Vdd" "4" 0x00000001)
+ ElementLine (-110 50 -110 -410 10)
+ ElementLine (-60 -460 350 -460 10)
+ ElementLine (400 -410 400 0 10)
+ ElementLine (350 50 -110 50 10)
+ ElementArc (-60 -410 50 50 270 90 10)
+ ElementArc (350 -410 50 50 180 90 10)
+ ElementArc (350 0 50 50 90 90 10)
+ )
+
+Element(0x00000000 "SMD Cap" "C21" "" 2565 1070 -50 61 0 150 0x00000000)
+(
+ Pin(0 0 80 30 110 35 "1" "1" 0x00000001)
+ Pin(-200 0 80 30 110 35 "2" "2" 0x02020001)
+ ElementLine (50 50 50 -50 10)
+ ElementLine (50 -50 -250 -50 10)
+ ElementLine (-250 -50 -250 50 10)
+ ElementLine (-250 50 50 50 10)
+ )
+
+Element(0x00000000 "SMD 0805" "C20" "" 2665 2375 -115 55 0 150 0x00000000)
+(
+ Pad(0 0 0 0 60 30 90 "1" "1" 0x00000100)
+ Pad(-90 0 -90 0 60 30 90 "2" "2" 0x00000100)
+ ElementLine (-125 35 35 35 10)
+ ElementLine (-125 -35 -125 35 10)
+ ElementLine (35 -35 -125 -35 10)
+ ElementLine (35 35 35 -35 10)
+ )
+
+Element(0x00000000 "SMD 0805" "C19" "" 2785 2375 -20 55 0 150 0x00000000)
+(
+ Pad(0 0 0 0 60 30 90 "1" "1" 0x00000100)
+ Pad(90 0 90 0 60 30 90 "2" "2" 0x00000100)
+ ElementLine (125 -35 -35 -35 10)
+ ElementLine (125 35 125 -35 10)
+ ElementLine (-35 35 125 35 10)
+ ElementLine (-35 -35 -35 35 10)
+ )
+
+Element(0x00000000 "SMD 0805" "C18" "" 2665 1800 155 -20 0 150 0x00000000)
+(
+ Pad(0 0 0 0 60 30 90 "1" "1" 0x00000100)
+ Pad(90 0 90 0 60 30 90 "2" "2" 0x00000100)
+ ElementLine (125 -35 -35 -35 10)
+ ElementLine (125 35 125 -35 10)
+ ElementLine (-35 35 125 35 10)
+ ElementLine (-35 -35 -35 35 10)
+ )
+
+Element(0x00000000 "AMP 745781-4" "J3" "A2100-ND" 820 1610 -125 837 0 150 0x00000000)
+(
+ Pin(0 432 80 30 110 42 "1" "1" 0x00000101)
+ Pin(0 324 80 30 110 42 "2" "2" 0x00000001)
+ Pin(0 216 80 30 110 42 "3" "3" 0x00000001)
+ Pin(0 108 80 30 110 42 "4" "4" 0x00000001)
+ Pin(0 0 80 30 110 42 "5" "5" 0x00000001)
+ Pin(-112 378 80 30 110 42 "6" "6" 0x00000001)
+ Pin(-112 270 80 30 110 42 "7" "7" 0x00000001)
+ Pin(-112 162 80 30 110 42 "8" "8" 0x00000001)
+ Pin(-112 54 80 30 110 42 "9" "9" 0x00000001)
+ Pin(-56 -276 120 30 150 120 "MOUNT HOLE" "10" 0x00000009)
+ Pin(-56 708 120 30 150 120 "MOUNT HOLE" "11" 0x00000009)
+ ElementLine (-317 -390 58 -390 10)
+ ElementLine (-317 -138 -317 -390 10)
+ ElementLine (-433 455 -434 -22 10)
+ ElementLine (-317 823 -317 571 10)
+ ElementLine (58 823 -317 823 10)
+ ElementLine (58 -390 58 823 10)
+ ElementArc (-375 -138 58 58 90 90 10)
+ ElementArc (-375 -22 58 58 270 90 10)
+ ElementArc (-375 455 58 58 0 90 10)
+ ElementArc (-375 571 58 58 180 90 10)
+ )
+
+Element(0x00000000 "3 TERM BLOCK" "J1" "DK ED1602-ND" 2285 2925 140 51 0 150 0x00000000)
+(
+ Pin(0 0 110 30 140 48 "1" "1" 0x00000001)
+ Pin(-194 0 110 30 140 48 "2" "2" 0x00000001)
+ Pin(-388 0 110 30 140 48 "3" "3" 0x00000001)
+ ElementLine (-388 160 -388 140 10)
+ ElementLine (-194 160 -194 140 10)
+ ElementLine (0 160 0 140 10)
+ ElementLine (81 -170 101 -170 10)
+ ElementLine (81 -190 81 -170 10)
+ ElementLine (101 -190 81 -190 10)
+ ElementLine (-509 -170 -489 -170 10)
+ ElementLine (-509 -190 -509 -170 10)
+ ElementLine (-489 -190 -509 -190 10)
+ ElementLine (101 -200 101 160 10)
+ ElementLine (-489 -200 101 -200 10)
+ ElementLine (-489 160 -489 -200 10)
+ ElementLine (101 160 -489 160 10)
+ )
+
+Element(0x00000000 "OP-AMP" "U7" "LTC1152" 2575 1925 380 200 0 150 0x00000000)
+(
+ Pin(0 0 60 30 90 28 "SHDN" "1" 0x02000101)
+ Pin(0 100 60 30 90 28 "-IN" "2" 0x02000001)
+ Pin(0 200 60 30 90 28 "+IN" "3" 0x02000001)
+ Pin(0 300 60 30 90 28 "V-" "4" 0x02020001)
+ Pin(300 300 60 30 90 28 "COMP" "5" 0x02000001)
+ Pin(300 200 60 30 90 28 "OUT" "6" 0x02000001)
+ Pin(300 100 60 30 90 28 "V+" "7" 0x02000001)
+ Pin(300 0 60 30 90 28 "CP" "8" 0x02000001)
+ ElementLine (-50 -50 -50 350 10)
+ ElementLine (-50 350 350 350 10)
+ ElementLine (350 350 350 -50 10)
+ ElementLine (-50 -50 100 -50 10)
+ ElementLine (200 -50 350 -50 10)
+ ElementArc (150 -50 50 50 0 180 10)
+ )
+
+Element(0x00000000 "R 0.5W" "R12" "" 1035 1935 -205 700 0 150 0x00000000)
+(
+ Pin(0 0 85 30 115 48 "1" "1" 0x00000101)
+ Pin(0 800 90 30 120 48 "2" "2" 0x00000001)
+ ElementLine (0 60 0 115 10)
+ ElementLine (115 115 -115 115 10)
+ ElementLine (-115 115 -115 685 10)
+ ElementLine (-115 685 115 685 10)
+ ElementLine (115 685 115 115 10)
+ ElementLine (0 685 0 750 10)
+ )
+Rat(1187 1553 0 1061 1553 0 0x00000010)
+Rat(1045 1820 1 1175 1780 0 0x00000010)
+Rat(1330 1185 1 1405 1315 0 0x00000010)
+Rat(2075 1455 1 2180 1420 0 0x00000010)
+Rat(2180 1420 0 2185 1310 0 0x00000010)
+Rat(2228 1547 0 2354 1547 0 0x00000010)
+Layer(1 "solder")
+(
+ Line(1945 1015 1945 1260 15 30 0x00000000)
+ Line(1615 1960 1555 1960 10 30 0x00000000)
+ Line(1185 2230 1185 2655 15 30 0x00000000)
+ Line(705 795 890 980 15 30 0x00000000)
+ Line(1405 955 1485 875 15 30 0x00000000)
+ Line(1005 695 1140 560 15 30 0x00000000)
+ Line(1005 795 1135 665 15 30 0x00000000)
+ Line(705 895 705 1075 15 30 0x00000000)
+ Line(1125 1435 1005 1315 15 30 0x00000000)
+ Line(1005 1235 1065 1175 15 30 0x00000000)
+ Line(1010 980 1105 1075 15 30 0x00000000)
+ Line(1345 955 1405 955 15 30 0x00000000)
+ Line(1065 1175 1125 1175 15 30 0x00000000)
+ Line(1190 665 1295 560 15 30 0x00000000)
+ Line(1375 1750 1375 2040 15 30 0x00000000)
+ Line(1605 2435 1605 2660 10 30 0x00000000)
+ Line(1655 2285 1520 2420 15 30 0x00000000)
+ Line(1375 2040 1185 2230 15 30 0x00000000)
+ Line(1135 665 1190 665 15 30 0x00000000)
+ Line(1105 1075 970 1210 15 30 0x00000000)
+ Line(890 980 1010 980 15 30 0x00000000)
+ Line(2460 965 1995 965 15 30 0x00000000)
+ Line(1855 2285 1855 2585 15 30 0x00000000)
+ Line(970 1210 970 1568 15 30 0x00000000)
+ Line(1520 2420 1520 2495 15 30 0x00000000)
+ Line(1755 2285 1605 2435 10 30 0x00000000)
+ Line(1995 965 1945 1015 15 30 0x00000000)
+ Line(1005 1315 1005 1235 15 30 0x00000000)
+ Line(2565 1070 2460 965 15 30 0x00000000)
+ Line(1945 1260 1985 1300 15 30 0x00000000)
+ Line(1125 1175 1345 955 15 30 0x00000000)
+ Line(2400 2625 2290 2625 10 30 0x00000000)
+ Line(970 1568 820 1718 15 30 0x00000000)
+ Line(1140 560 1195 560 15 30 0x00000000)
+ Line(1555 1960 1555 2285 10 30 0x00000000)
+ Text(525 2805 0 120 "LED (BACK)" 0x00000080)
+)
+Layer(2 "GND-solder")
+(
+ Line(820 2045 920 2145 35 30 0x00000040)
+ Line(930 1820 930 1932 30 30 0x00000000)
+ Line(1280 1585 1045 1820 30 30 0x00000000)
+ Line(1045 1820 930 1820 30 30 0x00000000)
+ Line(930 1932 820 2042 30 30 0x00000000)
+ Line(2155 815 2120 780 40 30 0x00000000)
+ Line(1675 780 1595 860 40 30 0x00000000)
+ Line(2630 850 2535 755 40 30 0x00000000)
+ Line(2120 780 1675 780 40 30 0x00000000)
+ Line(2215 755 2155 815 40 30 0x00000000)
+ Line(2535 755 2215 755 40 30 0x00000000)
+ Polygon(0x00000010)
+ (
+ (1125 2635) (1125 2235) (1330 2030) (1330 1705) (1430 1705)
+ (1430 1635) (1400 1635) (1400 1560) (1240 1720) (1115 1845)
+ (1115 2010) (1030 2010) (895 2145) (895 2635)
+ )
+ Polygon(0x00000010)
+ (
+ (1430 1885) (1570 1885) (1670 1885) (1670 2000) (1590 2000)
+ (1590 2235) (1925 2235) (1925 2525) (2645 2525) (2645 1250)
+ (2405 1250) (2405 1340) (2370 1375) (2320 1375) (2285 1340)
+ (2285 1305) (2300 1290) (2300 1290) (2300 1135) (2430 1135)
+ (2430 1005) (2090 1005) (2090 1280) (2000 1370) (2000 1515)
+ (1370 1515) (1370 1640) (1430 1640)
+ )
+ Polygon(0x00000010)
+ (
+ (2635 1250) (2635 1615) (2895 1615) (2895 1785) (2750 1785)
+ (2750 2520) (2975 2520) (2975 1250)
+ )
+)
+Layer(3 "Vcc-solder")
+(
+ Line(1455 2780 2695 2780 35 30 0x00000000)
+ Line(1035 2735 1445 2735 45 30 0x00000000)
+ Line(2340 1195 2815 1195 30 30 0x00000000)
+ Line(2815 1195 2815 900 30 30 0x00000000)
+ Line(1530 1180 1530 1435 30 30 0x00000000)
+ Line(1070 1265 1525 1265 35 30 0x00000000)
+ Line(1145 765 1395 765 35 30 0x00000000)
+ Line(1010 900 1145 765 35 30 0x00000000)
+ Line(1395 765 1595 565 35 30 0x00000000)
+ Line(2155 615 2110 660 40 30 0x00000000)
+ Line(1695 660 1595 560 40 30 0x00000000)
+ Line(2330 550 2155 615 45 30 0x00000000)
+ Line(2110 660 1695 660 40 30 0x00000000)
+ Line(2340 1315 2340 1195 30 30 0x00000000)
+ Line(2695 1700 2810 1700 30 30 0x00000000)
+ Line(1455 2585 1355 2285 45 30 0x00000000)
+ Line(1455 2590 1455 2780 35 30 0x00000000)
+ Line(2695 2780 2695 1700 30 30 0x00000000)
+)
+Layer(4 "component")
+(
+ Line(685 2450 585 2350 35 30 0x00000000)
+ Line(2975 1480 2565 1070 15 30 0x00000000)
+ Line(2975 2025 2975 1480 15 30 0x00000000)
+ Line(2875 2125 2975 2025 15 30 0x00000000)
+ Line(980 1270 980 1774 15 30 0x00000000)
+ Line(585 1787 708 1664 35 30 0x00000000)
+ Line(2675 2125 2575 2025 15 30 0x00000000)
+ Line(2120 2285 2180 2225 15 30 0x00000000)
+ Line(2055 720 2055 895 10 30 0x00000000)
+ Line(1835 1285 1835 1340 10 30 0x00000000)
+ Line(1860 1261 1835 1285 10 30 0x00000000)
+ Line(1860 1035 1860 1261 10 30 0x00000000)
+ Line(2090 655 2090 910 10 30 0x00000000)
+ Line(1995 560 2090 655 10 30 0x00000000)
+ Line(1809 1263 1809 1340 10 30 0x00000000)
+ Line(1829 1244 1809 1263 10 30 0x00000000)
+ Line(1829 1024 1829 1244 10 30 0x00000000)
+ Line(1991 959 1893 959 10 30 0x00000000)
+ Line(2235 1500 2235 1475 15 30 0x00000000)
+ Line(2055 895 1991 959 10 30 0x00000000)
+ Line(2075 2515 2075 2415 30 30 0x00000000)
+ Line(1490 1950 1505 1950 10 30 0x00000000)
+ Line(2075 2415 1520 2415 30 30 0x00000000)
+ Line(2175 2145 2205 2145 15 30 0x00000000)
+ Line(1655 1800 1656 1720 10 30 0x00000000)
+ Line(1490 1950 1490 2150 15 30 0x00000000)
+ Line(1745 1845 1635 1955 15 30 0x00000000)
+ Line(1775 1780 1707 1780 10 30 0x00000000)
+ Line(1655 2170 1945 2170 15 30 0x00000000)
+ Line(1950 2285 2070 2285 15 30 0x00000000)
+ Line(1655 2170 1635 2150 15 30 0x00000000)
+ Line(1655 2065 1835 1885 15 30 0x00000000)
+ Line(2015 1955 2255 1955 15 30 0x00000000)
+ Line(2180 2625 2290 2625 15 30 0x00000000)
+ Line(2075 2615 1985 2615 15 30 0x00000000)
+ Line(2125 2585 2290 2420 10 30 0x00000000)
+ Line(2205 2145 2270 2080 15 30 0x00000000)
+ Line(1315 2225 1255 2285 15 30 0x00000000)
+ Line(1855 2285 1795 2225 15 30 0x00000000)
+ Line(2125 2615 2125 2585 10 30 0x00000000)
+ Line(2495 2530 2400 2625 15 30 0x00000000)
+ Line(1795 2225 1315 2225 15 30 0x00000000)
+ Line(1520 2415 1455 2285 30 30 0x00000000)
+ Line(2440 2110 2345 2205 15 30 0x00000000)
+ Line(1490 1750 1600 1750 10 30 0x00000000)
+ Line(2075 2615 2125 2615 10 30 0x00000000)
+ Line(2875 1800 2755 1800 15 30 0x00000000)
+ Line(1635 2150 1375 2150 15 30 0x00000000)
+ Line(1835 1840 1775 1780 10 30 0x00000000)
+ Line(2000 2225 2095 2225 15 30 0x00000000)
+ Line(1732 1750 1732 1720 10 30 0x00000000)
+ Line(1911 1720 1937 1720 10 30 0x00000000)
+ Line(1985 1300 1937 1300 10 30 0x00000000)
+ Line(2015 985 1909 985 10 30 0x00000000)
+ Line(1860 1720 1886 1720 10 30 0x00000000)
+ Line(1745 1845 1681 1845 10 30 0x00000000)
+ Line(1950 1840 1835 1840 15 30 0x00000000)
+ Line(1707 1780 1707 1720 10 30 0x00000000)
+ Line(1681 1845 1681 1720 10 30 0x00000000)
+ Line(1122 2585 1122 2740 15 30 0x00000000)
+ Line(2070 2285 2120 2285 15 30 0x00000000)
+ Line(1490 1750 1375 1750 15 30 0x00000000)
+ Line(1950 1840 2015 1955 15 30 0x00000000)
+ Line(1635 1955 1615 1955 10 30 0x00000000)
+ Line(2160 1750 1732 1750 10 30 0x00000000)
+ Line(2160 1675 2440 1955 15 30 0x00000000)
+ Line(2160 1680 2160 1750 10 30 0x00000000)
+ Line(1945 2170 2000 2225 15 30 0x00000000)
+ Line(1505 1950 1655 1800 10 30 0x00000000)
+ Line(1190 1595 1190 1675 15 30 0x00000000)
+ Line(1190 1510 1190 1435 15 30 0x00000000)
+ Line(1190 1435 1130 1435 15 30 0x00000000)
+ Line(1695 860 1695 1276 10 30 0x00000000)
+ Line(1795 860 1732 923 10 30 0x00000000)
+ Line(1797 1015 1797 1225 10 30 0x00000000)
+ Line(1995 860 1927 927 10 30 0x00000000)
+ Line(1495 560 1646 711 10 30 0x00000000)
+ Line(1657 973 1657 1279 10 30 0x00000000)
+ Line(1657 1279 1681 1303 10 30 0x00000000)
+ Line(1681 1303 1681 1340 10 30 0x00000000)
+ Line(1927 927 1885 927 10 30 0x00000000)
+ Line(1895 860 1758 997 10 30 0x00000000)
+ Line(1732 923 1732 1340 10 30 0x00000000)
+ Line(1893 959 1829 1024 10 30 0x00000000)
+ Line(1646 962 1657 973 10 30 0x00000000)
+ Line(1797 1225 1784 1239 10 30 0x00000000)
+ Line(1646 711 1646 962 10 30 0x00000000)
+ Line(1895 560 2055 720 10 30 0x00000000)
+ Line(1885 927 1797 1015 10 30 0x00000000)
+ Line(2090 910 2015 985 10 30 0x00000000)
+ Line(1985 2615 1955 2585 15 30 0x00000000)
+ Line(1758 997 1758 1340 10 30 0x00000000)
+ Line(1707 1288 1707 1340 10 30 0x00000000)
+ Line(2235 1475 2275 1435 15 30 0x00000000)
+ Line(1909 985 1860 1035 10 30 0x00000000)
+ Line(1005 1195 1005 895 35 30 0x00000000)
+ Line(1060 1255 1005 1195 35 30 0x00000000)
+ Line(585 2350 585 1787 35 30 0x00000000)
+ Line(705 595 875 765 15 30 0x00000000)
+ Line(795 785 795 1155 15 30 0x00000000)
+ Line(2555 475 1480 475 15 30 0x00000000)
+ Line(2630 550 2555 475 15 30 0x00000000)
+ Line(1455 2285 1290 2450 35 30 0x00000000)
+ Line(875 765 875 1165 15 30 0x00000000)
+ Line(705 695 795 785 15 30 0x00000000)
+ Line(980 1774 820 1934 15 30 0x00000000)
+ Line(705 1075 635 1145 15 30 0x00000000)
+ Line(2290 2420 2290 2225 10 30 0x00000000)
+ Line(1480 475 1395 560 15 30 0x00000000)
+ Line(635 1425 820 1610 15 30 0x00000000)
+ Line(875 1165 980 1270 15 30 0x00000000)
+ Line(2095 2225 2175 2145 15 30 0x00000000)
+ Line(1290 2450 685 2450 35 30 0x00000000)
+ Line(1600 1750 1630 1720 10 30 0x00000000)
+ Line(1897 2827 1897 2925 15 30 0x00000000)
+ Line(915 1731 820 1826 15 30 0x00000000)
+ Line(915 1275 915 1731 15 30 0x00000000)
+ Line(1755 2585 2091 2925 15 30 0x00000000)
+ Line(1501 2764 1501 2925 15 30 0x00000000)
+ Line(1655 2585 1897 2827 15 30 0x00000000)
+ Line(1182 2525 1122 2585 15 30 0x00000000)
+ Line(1520 2495 1490 2525 15 30 0x00000000)
+ Line(1490 2525 1182 2525 15 30 0x00000000)
+ Line(1605 2660 1501 2764 15 30 0x00000000)
+ Line(1185 2655 1485 2655 15 30 0x00000000)
+ Line(1485 2655 1555 2585 15 30 0x00000000)
+ Line(1122 2740 1307 2925 15 30 0x00000000)
+ Line(2255 1955 2375 2075 15 30 0x00000000)
+ Line(2440 1955 2440 2110 15 30 0x00000000)
+ Line(2345 2865 2285 2925 15 30 0x00000000)
+ Line(2345 2205 2345 2865 15 30 0x00000000)
+ Line(2785 2215 2785 2375 15 30 0x00000000)
+ Line(795 1155 915 1275 15 30 0x00000000)
+ Line(2875 2225 2875 2375 15 30 0x00000000)
+ Line(1784 1239 1784 1340 10 30 0x00000000)
+ Line(2575 2125 2495 2215 15 30 0x00000000)
+ Line(2665 2375 2785 2375 15 30 0x00000000)
+ Line(2575 2225 2575 2375 15 30 0x00000000)
+ Line(2495 2215 2495 2530 15 30 0x00000000)
+ Line(2875 1925 2875 1800 15 30 0x00000000)
+ Line(2875 2125 2785 2215 15 30 0x00000000)
+ Line(1937 1300 1937 1340 10 30 0x00000000)
+ Line(2875 2125 2675 2125 15 30 0x00000000)
+ Line(635 1145 635 1425 15 30 0x00000000)
+ Line(1835 1885 1835 1840 15 30 0x00000000)
+ Line(1695 1276 1707 1288 10 30 0x00000000)
+ Text(2515 2705 0 140 "LED rev 1" 0x00000000)
+)
+Layer(5 "GND-component")
+(
+ Line(1505 950 1595 860 30 30 0x00000000)
+ Line(1440 950 1505 950 30 30 0x00000000)
+ Line(2220 1545 2155 1545 20 30 0x00000000)
+ Line(2515 1350 2515 1415 30 30 0x00000000)
+ Line(1200 1350 1230 1350 35 30 0x00000000)
+ Line(1860 1395 1860 1430 10 30 0x00000000)
+ Line(1965 1495 1965 1635 25 30 0x00000000)
+ Line(1855 1495 1965 1495 25 30 0x00000000)
+ Line(1835 1665 1835 1625 10 30 0x00000000)
+ Line(1885 1395 1885 1460 10 30 0x00000000)
+ Line(1965 1660 1965 1635 10 30 0x00000000)
+ Line(1810 1665 1810 1630 10 30 0x00000000)
+ Line(1785 1660 1785 1625 10 30 0x00000000)
+ Line(1760 1625 1760 1660 10 30 0x00000000)
+ Line(1280 1580 1280 1490 25 30 0x00000000)
+ Line(1195 1555 1280 1555 20 30 0x00000000)
+ Line(2545 1320 2515 1350 30 30 0x00000000)
+ Line(1005 595 1085 595 30 30 0x00000000)
+ Line(1085 595 1085 955 30 30 0x00000000)
+ Line(1085 955 1145 1015 30 30 0x00000000)
+ Line(1145 1015 1245 1015 30 30 0x00000000)
+ Arc(1445 995 45 45 30 30 270 90 0x00000000)
+ Polygon(0x00000010)
+ (
+ (2250 1535) (2270 1535) (2270 1485) (2325 1485) (2325 1535)
+ (2345 1535) (2345 1560) (2325 1560) (2325 1630) (2160 1630)
+ (2160 1610) (2270 1610) (2270 1560) (2250 1560)
+ )
+ Polygon(0x00000010)
+ (
+ (1995 1470) (1880 1470) (1880 1450) (2015 1450) (2015 1365)
+ (2160 1365) (2160 1330) (2195 1330) (2195 1425) (2160 1460)
+ (2160 1630) (2070 1630) (2070 1720) (1995 1720)
+ )
+ Polygon(0x00000010)
+ (
+ (1370 1635) (1930 1635) (1930 1525) (1370 1525)
+ )
+ Polygon(0x00000010)
+ (
+ (1865 1510) (1225 1510) (1225 995) (1415 995) (1415 1255)
+ (1365 1255) (1365 1365) (1605 1365) (1605 1415) (1865 1415)
+ )
+ Polygon(0x00000000)
+ (
+ (1360 1295) (1390 1295) (1390 1335) (1360 1335)
+ )
+ Polygon(0x00000010)
+ (
+ (1070 1565) (1090 1565) (1090 1810) (1150 1810) (1150 1765)
+ (1125 1740) (1125 1640) (1145 1640) (1145 1565) (1165 1565)
+ (1165 1540) (1145 1540) (1145 1485) (1090 1485) (1090 1540)
+ (1070 1540)
+ )
+)
+Layer(6 "Vcc-component")
+(
+ Line(1045 1870 1045 1935 25 30 0x00000000)
+ Line(708 2155 708 1988 40 30 0x00000000)
+ Line(2575 1925 2490 2010 25 30 0x00000000)
+ Line(1630 1340 1630 1250 10 30 0x00000000)
+ Line(1910 1430 1965 1430 10 30 0x00000000)
+ Line(1910 1395 1910 1430 10 30 0x00000000)
+ Line(1200 2355 1000 2155 35 30 0x00000000)
+ Line(2575 1925 2485 1835 25 30 0x00000000)
+ Line(1070 1265 1070 1330 25 30 0x00000000)
+ Line(2360 1500 2360 1315 25 30 0x00000000)
+ Line(2445 1250 2445 1675 30 30 0x00000000)
+ Line(2100 1250 2445 1250 30 30 0x00000000)
+ Line(1910 1340 1910 1250 10 30 0x00000000)
+ Line(1965 1430 1965 1400 10 30 0x00000000)
+ Line(2375 1585 2440 1585 25 30 0x00000000)
+ Line(2665 1835 2575 1925 30 30 0x00000000)
+ Line(1120 1875 1190 1875 20 30 0x00000000)
+ Line(1045 1595 1045 1875 20 30 0x00000000)
+ Line(1045 1875 1120 1875 20 30 0x00000000)
+ Line(2875 2025 2675 2025 25 30 0x00000000)
+ Line(1285 2355 1200 2355 35 30 0x00000000)
+ Line(1355 2285 1285 2355 35 30 0x00000000)
+ Line(2675 2025 2575 1925 25 30 0x00000000)
+ Line(1000 2155 708 2155 40 30 0x00000000)
+ Line(1060 1510 1060 1375 25 30 0x00000000)
+ Line(1190 1875 1280 1785 20 30 0x00000000)
+ Line(2490 2010 2490 2135 25 30 0x00000000)
+ Line(2450 1510 2495 1510 35 30 0x00000000)
+ Line(2485 1835 2485 1680 25 30 0x00000000)
+ Line(2485 1680 2375 1680 25 30 0x00000000)
+ Line(2665 1800 2665 1835 30 30 0x00000000)
+ Line(2375 1680 2270 1680 30 30 0x00000000)
+ Line(2490 2135 2400 2225 25 30 0x00000000)
+ Polygon(0x00000000)
+ (
+ (1500 1255) (1530 1255) (1530 1295) (1500 1295)
+ )
+ Polygon(0x00000010)
+ (
+ (1445 1255) (1635 1255) (1635 995) (1635 995) (1635 995)
+ (1635 995) (1635 995) (1445 995)
+ )
+ Polygon(0x00000010)
+ (
+ (1885 1260) (2120 1260) (2120 1005) (1921 1003) (1885 1039)
+ )
+ Polygon(0x00000000)
+ (
+ (2080 1250) (2110 1250) (2110 1295) (2080 1295)
+ )
+)
+Layer(7 "unused")
+(
+)
+Layer(8 "unused")
+(
+ Line(3135 3225 345 3225 35 30 0x00000000)
+ Line(3135 210 3135 3225 35 30 0x00000000)
+ Line(345 210 3135 210 35 30 0x00000000)
+ Line(345 3225 345 210 35 30 0x00000000)
+)
+Layer(9 "silk")
+(
+)
+Layer(10 "silk")
+(
+ Text(2210 3120 0 115 "ANODE" 0x00000400)
+ Text(1855 3125 0 115 "-Y" 0x00000400)
+ Text(2045 3130 0 115 "+Y" 0x00000400)
+ Text(1255 3125 0 115 "-X" 0x00000400)
+ Text(1455 3125 0 115 "+X" 0x00000400)
+ Text(525 295 0 280 "FLARE GENESIS" 0x00000400)
+ Text(435 2815 0 165 "LED Interface" 0x00000400)
+ Text(1885 285 0 295 "harry eaton" 0x00000400)
+)
diff --git a/pcb/LED.NET b/pcb/LED.NET
new file mode 100755
index 0000000..eb9f8a2
--- /dev/null
+++ b/pcb/LED.NET
@@ -0,0 +1,47 @@
+AGND C8-2 C9-2 C10-2 C11-2 C12-2 C13-2 C20-2 C21-2 R7-2 R9-2 \
+ R10-2 U2-6 U2-7 U2-8 U2-9 U2-18 U3-2 U3-5 U7-4
+DGND C5-2 C6-2 C7-2 C14-2 C15-2 C16-2 C17-1 J3-1 U2-14 U2-19 \
+ U4-2 U4-5 U5-5 U6-4 X1-2
+Minus12V C3-1 C4-1 J3-9 U1-6
+Plus12V J3-6 R11-1 R12-2 U1-7 U1-11
+S00001 C8-1 C9-1 C10-1 C13-1 C18-1 R2-2 R6-1 R8-1 U2-15 U2-17 \
+ U3-4 U7-1 U7-7
+SIG10 Skinny U1-2 U1-8 U1-15
+SIG41 Power C3-2 R3-2 U1-16
+SIG43 C4-2 R1-2 U1-1
+SIG49 C2-1 R4-2 R6-2 R7-1 U2-4
+SIG50 C2-2 R4-1 U1-5 U2-3
+SIG51 C1-1 R5-2 R8-2 R9-1 U2-2
+SIG52 C1-2 R5-1 U1-12 U2-1
+SIG87 U2-10 U2-11
+SIG88 U2-12 U2-13
+SIG91 C19-1 C20-1 C21-1 U2-16 U7-2 U7-6
+SIG100 U2-21 U5-11
+SIG101 U2-20 U5-10
+SIG124 J2-3 U1-4
+SIG125 J2-2 U1-3
+SIG127 J1-2 U1-14
+SIG139 C11-1 U3-1
+SIG146 C12-1 R11-2 U3-6
+SIG150 C15-1 R12-1 U4-6
+SIG155 C14-1 U4-1
+SIG191 U5-16 X1-3
+SIG241 U2-26 U5-15
+SIG252 R13-1 U4-3 U5-4
+SIG258 U5-18 U6-3
+SIG259 U5-17 U6-2
+SIG285 J3-4 R14-1 U6-7
+SIG286 J3-5 R14-2 U6-8
+SIG291 U2-22 U5-9
+SIG292 U2-23 U5-8
+SIG293 U2-24 U5-7
+SIG294 U2-25 U5-6
+SIG296 J3-2 U6-5
+SIG297 J3-3 U6-6
+SIG310 J1-1 R10-1 U2-5
+SIG311 J1-3 U1-13
+SIG321 C5-1 C6-1 C7-1 C16-1 C17-2 R13-2 U2-28 U4-4 U5-14 U6-1 \
+ X1-4
+SIG338 R1-1 R2-1 R3-1 U7-3
+SIG341 C18-2 U7-8
+SIG343 C19-2 U7-5
diff --git a/pcb/bridge.pcb b/pcb/bridge.pcb
new file mode 100644
index 0000000..dc79211
--- /dev/null
+++ b/pcb/bridge.pcb
@@ -0,0 +1,6 @@
+V- T1-2
+V+ T1-1
+int5 T1-3 rectifier1/D4-1 rectifier1/D3-2
+int6 T1-4 rectifier1/D2-1 rectifier1/D1-2
+Vout rectifier1/D3-1 rectifier1/D1-1 C2-1 C1-1
+GND rectifier1/D4-2 rectifier1/D2-2 C2-2 C1-2
diff --git a/pcb/flare_objects.gif b/pcb/flare_objects.gif
new file mode 100644
index 0000000..d2938ed
--- /dev/null
+++ b/pcb/flare_objects.gif
Binary files differ
diff --git a/pcb/pic_instance.gif b/pcb/pic_instance.gif
new file mode 100644
index 0000000..eb6ae04
--- /dev/null
+++ b/pcb/pic_instance.gif
Binary files differ
diff --git a/pcb/pic_object.gif b/pcb/pic_object.gif
new file mode 100644
index 0000000..5ba2733
--- /dev/null
+++ b/pcb/pic_object.gif
Binary files differ
diff --git a/pcb/powersup.pcb b/pcb/powersup.pcb
new file mode 100644
index 0000000..15da12b
--- /dev/null
+++ b/pcb/powersup.pcb
@@ -0,0 +1,10 @@
+NET1 power_supply1/T1-3 power_supply1/rectifier1/D4-1 \
+ power_supply1/rectifier1/D3-2
+NET2 power_supply1/T1-4 power_supply1/rectifier1/D2-1 \
+ power_supply1/rectifier1/D1-2
+In+ power_supply1/T1-1
+In- power_supply1/T1-2
+Out power_supply1/rectifier1/D3-1 power_supply1/rectifier1/D1-1 \
+ power_supply1/C2-1 power_supply1/C1-1 R1-1
+GND power_supply1/rectifier1/D4-2 power_supply1/rectifier1/D2-2 \
+ power_supply1/C2-2 power_supply1/C1-2 R1-2
diff --git a/psfiles/analoglib1.lps b/psfiles/analoglib1.lps
new file mode 100644
index 0000000..9ac56dd
--- /dev/null
+++ b/psfiles/analoglib1.lps
@@ -0,0 +1,238 @@
+%! PostScript set of library objects for XCircuit
+% Version: 2.0
+% Library name is: analoglib
+% Author: Tim Edwards <tim@stravinsky.jhuapl.edu>
+%
+
+% XCircuitLib library objects
+
+/arrowhead {
+% -12 -32 24 36 bbox
+begingate
+8 -28 beginpath
+3 -18 3 -15 0 0 curveto
+-3 -15 -3 -18 -8 -28 curveto
+-2 -26 2 -26
+8 -28 curveto
+249 1.00 endpath
+endgate
+} def
+
+/source {
+% -32 -64 64 128 bbox
+% hidden
+begingate
+1 1.00 0 0 32 0.00 360.00 xcarc
+1 1.00 0 32 0 64 2 polygon
+1 1.00 0 -32 0 -64 2 polygon
+endgate
+} def
+
+/capacitor {
+% -32 -64 177 128 bbox
+(1.0) (p) 2 beginparm
+% fundamental
+1 1.00 0 -64 0 -6 2 polygon
+1 1.00 0 64 0 6 2 polygon
+1 1.00 -32 6 32 6 2 polygon
+1 1.00 -32 -6 32 -6 2 polygon
+1.000 0.000 0.000 scb
+(c.1) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel
+(c.2) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel
+sce
+(spice:C%i %pc.1 %pc.2 %v"1.0"%v"p") {/Times-Roman 1.000 cf} 2 0 0 -208 -160 infolabel
+(sim:c %pc.1 %pc.2) {/Times-Roman 1.000 cf} 2 0 0 -208 -208 infolabel
+(F) v2 {hS} v1 {/Helvetica 1.000 cf} 5 20 0 48 0 label
+endgate
+} def
+
+/polarized {
+% -32 -64 177 128 bbox
+(1.0) (p) 2 beginparm
+% fundamental
+1 1.00 0 -64 0 -6 2 polygon
+1 1.00 0 64 0 6 2 polygon
+1 1.00 -32 6 32 6 2 polygon
+1 1.00 0 -80 74 66.00 114.00 xcarc
+1.000 0.000 0.000 scb
+(t) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel
+(b) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel
+sce
+(spice:C%i %pt %pb %v"1.0"%v"p") {/Times-Roman 1.000 cf} 2 0 0 -208 -160 infolabel
+(sim:e %pt %pb %pb) {/Times-Roman 1.000 cf} 2 0 0 -208 -208 infolabel
+(F) v2 {hS} v1 {/Helvetica 1.000 cf} 5 20 0 48 0 label
+endgate
+} def
+
+/resistor {
+% -14 -64 151 128 bbox
+(1.0) (k) 2 beginparm
+% fundamental
+1 1.00 0 64 0 36 2 polygon
+1 1.00 0 -64 0 -36 2 polygon
+1 1.00 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
+(r.1) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel
+(r.2) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel
+sce
+(spice:R%i %pr.1 %pr.2 %v"1.0"%v"k") {/Times-Roman 1.000 cf} 2 0 0 -208 -160 infolabel
+(sim:r %pr.1 %pr.2) {/Times-Roman 1.000 cf} 2 0 0 -208 -208 infolabel
+(W) {/Symbol 1.000 cf} v2 {hS} v1 {/Helvetica 1.000 cf} 6 20 0 32 0 label
+endgate
+} def
+
+/inductor {
+% -14 -64 164 112 bbox
+(1.0) (m) 2 beginparm
+% fundamental
+1 1.00 20 -28 20 -44 0 -48 0 -24 spline
+1 1.00 -20 -20 -20 -32 0 -28 0 -24 spline
+1 1.00
+20 32 20 16 0 12 0 36 spline
+1 1.00 20 12 20 -4 0 -8 0 16 spline
+1 1.00 20 -8 20 -24 0 -28 0 -4 spline
+1 1.00 -20 20 -20
+8 0 12 0 16 spline
+1 1.00 -20 0 -20 -12 0 -8 0 -4 spline
+1 1.00 0 -48 0 -64 2 polygon
+1 1.00 0 36 0 48 2 polygon
+1.000 0.000 0.000 scb
+(l.1) {/Times-Roman 1.000 cf} 2 9 0 0 48 pinlabel
+(l.2) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel
+sce
+(spice:L%i %pl.1 %pl.2 %v"1.0"%v"m") {/Times-Roman 1.000 cf} 2 0 0 -208 -160 infolabel
+(sim:l %pl.1 %pl.2) {/Times-Roman 1.000 cf} 2 0 0 -208 -208 infolabel
+(H) v2 {hS} v1 {/Helvetica 1.000 cf} 5 20 0 32 0 label
+endgate
+} def
+
+/vsource {
+% -32 -64 139 128 bbox
+(5) 1 beginparm
+% fundamental
+1.00 0 0 0 source
+(+) {/Symbol 1.000 cf} 2 5 0 0 18 label
+(-) {/Symbol 1.000 cf} 2 5 0 0 -18 label
+1.000 0.000 0.000 scb
+(v.p) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel
+(v.m) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel
+sce
+(spice:V%i %pv.m %pv.p %v"5") {/Helvetica 1.000 cf} 2 20 0 -96 -160 infolabel
+(V) {hS} v1 {/Helvetica 1.000 cf} 4 20 0 48 0 label
+endgate
+} def
+
+/isource {
+% -32 -64 163 128 bbox
+(1) (m) 2 beginparm
+% fundamental
+1.00 0 0 0 source
+1 0.75 0 20 0 -8 2 polygon
+0.80 180 0 -20 arrowhead
+1.000 0.000 0.000 scb
+(i.p) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel
+(i.m) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel
+sce
+(spice:I%i %pi.m %pi.p %v"1"%v"m") {/Times-Roman 1.000 cf} 2 20 0 -96 -160 infolabel
+(A) v2 {hS} v1 {/Helvetica 1.000 cf} 5 20 0 48 0 label
+endgate
+} def
+
+/acsource {
+% -32 -64 211 128 bbox
+(5) (0) (1) (k) 4 beginparm
+% fundamental
+1.00 0 0 0 source
+1 0.80 0 -48 0 48 -16 0 16 0 spline
+1.000 0.000 0.000 scb
+(s.p) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel
+(s.m) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel
+sce
+(spice:V%i %ps.m %ps.p SIN\(%v"0" %v"5" %v"1"%v"k"\)) {/Helvetica 1.000 cf} 2 20 0 -336 -160 infolabel
+(offset) {ss} (V) {hS} v2 {/Helvetica 1.000 cf} 6 20 0 48 0 label
+(p-p) {ss} (V) {hS} v1 {/Helvetica 1.000 cf} 6 20 0 48 48 label
+(Hz) v4 {hS} v3 {/Helvetica 1.000 cf} 5 20 0 48 -48 label
+endgate
+} def
+
+/nmos {
+% -64 -64 161 128 bbox
+(3) (2) 2 beginparm
+% fundamental
+1 1.00 0 -64 0 -28 -32 -28 -32 28 0 28 0 64 6 polygon
+1 1.00 -44 -28 -44 28 2 polygon
+1 1.00 -44 0 -64 0 2 polygon
+1.000 0.000 0.000 scb
+(G) {/Helvetica 1.000 cf} 2 7 0 -64 0 pinlabel
+(S) {/Helvetica 1.000 cf} 2 13 0 0 -64 pinlabel
+(D) {/Helvetica 1.000 cf} 2 9 0 0 64 pinlabel
+sce
+(spice:M%i %pD %pG %pS GND nmos W=%v"3" L=%v"2") {/Times-Roman 1.000 cf} 2 4 0 -244 -139 infolabel
+(sim:n %pG %pD %pS) {/Times-Roman 1.000 cf} 2 4 0 -244 -187 infolabel
+v1 (W=) {/Helvetica 1.000 cf} 3 20 0 16 16 label
+v2 (L=) {/Helvetica 1.000 cf} 3 20 0 16 -16 label
+endgate
+} def
+
+/pmos {
+% -64 -64 161 128 bbox
+(3) (2) 2 beginparm
+% fundamental
+1 1.00 -44 -28 -44 28 2 polygon
+1 1.00 -60 0 -64 0 2 polygon
+1 1.00 0 -64 0 -28 -32 -28 -32 28 0 28 0 64 6 polygon
+1 1.00 -52 0 8 0.00 360.00 xcarc
+1.000 0.000 0.000 scb
+(S) {/Helvetica 1.000 cf} 2 9 0 0 64 pinlabel
+(D) {/Helvetica 1.000 cf} 2 13 0 0 -64 pinlabel
+(G) {/Helvetica 1.000 cf} 2 7 0 -64 0 pinlabel
+sce
+(spice:M%i %pD %pG %pS Vdd pmos W=%v"3" L=%v"2") {/Times-Roman 1.000 cf} 2 4 0 -196 -139 infolabel
+(sim:p %pG %pD %pS) {/Times-Roman 1.000 cf} 2 4 0 -196 -187 infolabel
+v1 (W=) {/Helvetica 1.000 cf} 3 20 0 16 16 label
+v2 (L=) {/Helvetica 1.000 cf} 3 20 0 16 -16 label
+endgate
+} def
+
+/npn {
+% -64 -64 73 128 bbox
+begingate
+% fundamental
+1 1.00 -48 0 -64 0 2 polygon
+1 1.00 -48 48 -48 -48 2 polygon
+1 1.00 0 48 -48 22 2 polygon
+1 1.00 0 48 0 64 2 polygon
+1 1.00 0 -48 -48 -22 2 polygon
+1 1.00 0 -48 0 -64 2 polygon
+1.00 240 0 -48 arrowhead
+1.000 0.000 0.000 scb
+(C) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel
+(B) {/Times-Roman 1.000 cf} 2 7 0 -64 0 pinlabel
+(E) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel
+sce
+(spice:Q%i %pC %pB %pE npn) {/Times-Roman 1.000 cf} 2 4 0 -244 -139 infolabel
+(sim:b %pB %pE %pC) {/Times-Roman 1.000 cf} 2 4 0 -244 -187 infolabel
+endgate
+} def
+
+/pnp {
+% -64 -64 64 128 bbox
+begingate
+% fundamental
+1 1.00 -48 0 -64 0 2 polygon
+1 1.00 -48 48 -48 -48 2 polygon
+1 1.00 0 48 -48 22 2 polygon
+1 1.00 0 48 0 64 2 polygon
+1 1.00 0 -48 -48 -22 2 polygon
+1 1.00 0 -48 0 -64 2 polygon
+1.00 120 -48 22 arrowhead
+1.000 0.000 0.000 scb
+(C) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel
+(B) {/Times-Roman 1.000 cf} 2 7 0 -64 0 pinlabel
+(E) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel
+sce
+(spice:Q%i %pC %pB %pE pnp) {/Times-Roman 1.000 cf} 2 4 0 -244 -139 infolabel
+endgate
+} def
+
+% EndLib
diff --git a/psfiles/analoglib2.lps b/psfiles/analoglib2.lps
new file mode 100644
index 0000000..c8050c2
--- /dev/null
+++ b/psfiles/analoglib2.lps
@@ -0,0 +1,235 @@
+%! PostScript set of library objects for XCircuit
+% Version: 2.0
+% Library name is: analoglib2
+% Author: R. Timothy Edwards <tim@stravinsky.jhuapl.edu>
+%
+
+% XCircuitLib library objects
+/capacitor {
+% -32 -64 177 128 bbox
+(1.0) (p) 2 beginparm
+% fundamental
+1 1.00 0 -64 0 -6 2 polygon
+1 1.00 0 64 0 6 2 polygon
+1 1.00 -32 6 32 6 2 polygon
+1 1.00 -32 -6 32 -6 2 polygon
+1.000 0.000 0.000 scb
+(c.1) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel
+(c.2) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel
+sce
+mark v2 v1 (spice:C%i %pc.1 %pc.2 ) {/Times-Roman 1.000 cf} ctmk 4 0 -208 -160 infolabel
+(sim:c %pc.1 %pc.2) {/Times-Roman 1.000 cf} 2 4 0 -208 -208 infolabel
+mark (F) v2 {hS} v1 {/Helvetica 1.000 cf} ctmk 20 0 48 0 label
+endgate
+} def
+
+/polarized {
+% -32 -64 177 128 bbox
+(1.0) (p) 2 beginparm
+% fundamental
+1 1.00 0 -64 0 -6 2 polygon
+1 1.00 0 64 0 6 2 polygon
+1 1.00 -32 6 32 6 2 polygon
+1 1.00 0 -80 74 66.00 114.00 xcarc
+1.000 0.000 0.000 scb
+(t) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel
+(b) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel
+sce
+mark v2 v1 (spice:C%i %pt %pb ) {/Times-Roman 1.000 cf} ctmk 4 0 -208 -160 infolabel
+(sim:e %pt %pb %pb) {/Times-Roman 1.000 cf} 2 4 0 -208 -208 infolabel
+mark (F) v2 {hS} v1 {/Helvetica 1.000 cf} ctmk 20 0 48 0 label
+endgate
+} def
+
+/resistor {
+% -14 -64 151 128 bbox
+(1.0) (k) 2 beginparm
+% fundamental
+1 1.00 0 64 0 36 2 polygon
+1 1.00 0 -64 0 -36 2 polygon
+1 1.00 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
+(r.1) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel
+(r.2) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel
+sce
+mark v2 v1 (spice:R%i %pr.1 %pr.2 ) {/Times-Roman 1.000 cf} ctmk 4 0 -208 -160 infolabel
+(sim:r %pr.1 %pr.2) {/Times-Roman 1.000 cf} 2 4 0 -208 -208 infolabel
+mark (W) {/Symbol 1.000 cf} v2 {hS} v1 {/Helvetica 1.000 cf} ctmk 20 0 32 0 label
+endgate
+} def
+
+/inductor {
+% -14 -64 164 112 bbox
+(1.0) (m) 2 beginparm
+% fundamental
+1 1.00 20 -28 20 -44 0 -48 0 -24 spline
+1 1.00 -20 -20 -20 -32 0 -28 0 -24 spline
+1 1.00 20 32 20 16 0 12 0 36 spline
+1 1.00 20 12 20 -4 0 -8 0 16 spline
+1 1.00 20 -8 20 -24 0 -28 0 -4 spline
+1 1.00 -20 20 -20 8 0 12 0 16 spline
+1 1.00 -20 0 -20 -12 0 -8 0 -4 spline
+1 1.00 0 -48 0 -64 2 polygon
+1 1.00 0 36 0 48 2 polygon
+1.000 0.000 0.000 scb
+(l.1) {/Times-Roman 1.000 cf} 2 9 0 0 48 pinlabel
+(l.2) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel
+sce
+mark v2 v1 (spice:L%i %pl.1 %pl.2 ) {/Times-Roman 1.000 cf} ctmk 4 0 -208 -160 infolabel
+(sim:l %pl.1 %pl.2) {/Times-Roman 1.000 cf} 2 4 0 -208 -208 infolabel
+mark (H) v2 {hS} v1 {/Helvetica 1.000 cf} ctmk 20 0 32 0 label
+endgate
+} def
+
+/source {
+% -32 -64 64 128 bbox
+% hidden
+begingate
+1 1.00 0 0 32 0.00 360.00 xcarc
+1 1.00 0 32 0 64 2 polygon
+1 1.00 0 -32 0 -64 2 polygon
+endgate
+} def
+
+/vsource {
+% -32 -64 139 128 bbox
+(5) 1 beginparm
+% fundamental
+1.00 0 0 0 source
+(+) {/Symbol 1.000 cf} 2 5 0 0 18 label
+(-) {/Symbol 1.000 cf} 2 5 0 0 -18 label
+1.000 0.000 0.000 scb
+(v.p) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel
+(v.m) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel
+sce
+mark v1 (spice:V%i %pv.m %pv.p ) {/Helvetica 1.000 cf} ctmk 20 0 -96 -160 infolabel
+mark (V) {hS} v1 {/Helvetica 1.000 cf} ctmk 20 0 48 0 label
+endgate
+} def
+
+/arrowhead {
+% -12 -32 24 36 bbox
+begingate
+8 -28 beginpath
+3 -18 3 -15 0 0 curveto
+-3 -15 -3 -18 -8 -28 curveto
+-2 -26 2 -26 8 -28 curveto
+249 1.00 endpath
+endgate
+} def
+
+/isource {
+% -32 -64 163 128 bbox
+(1) (m) 2 beginparm
+% fundamental
+1.00 0 0 0 source
+1 0.75 0 20 0 -8 2 polygon
+0.80 180 0 -20 arrowhead
+1.000 0.000 0.000 scb
+(i.p) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel
+(i.m) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel
+sce
+mark v2 v1 (spice:I%i %pi.m %pi.p ) {/Times-Roman 1.000 cf} ctmk 20 0 -96 -160 infolabel
+mark (A) v2 {hS} v1 {/Helvetica 1.000 cf} ctmk 20 0 48 0 label
+endgate
+} def
+
+/acsource {
+% -32 -64 211 128 bbox
+(5) (0) (1) (k) 4 beginparm
+% fundamental
+1.00 0 0 0 source
+1 0.80 0 -48 0 48 -16 0 16 0 spline
+1.000 0.000 0.000 scb
+(s.p) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel
+(s.m) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel
+sce
+mark (\)) v4 v3 ( ) v1 ( ) v2 (spice:V%i %ps.m %ps.p SIN\() {/Helvetica 1.000 cf} ctmk 20 0 -336 -160 infolabel
+mark (offset) {ss} (V) {hS} v2 {/Helvetica 1.000 cf} ctmk 20 0 48 0 label
+mark (p-p) {ss} (V) {hS} v1 {/Helvetica 1.000 cf} ctmk 20 0 48 48 label
+mark (Hz) v4 {hS} v3 {/Helvetica 1.000 cf} ctmk 20 0 48 -48 label
+endgate
+} def
+
+/nmos {
+% -64 -64 161 128 bbox
+(3) (2) (nmos) 3 beginparm
+% fundamental
+1 1.00 0 -64 0 -28 -32 -28 -32 28 0 28 0 64 6 polygon
+1 1.00 -44 -28 -44 28 2 polygon
+1 1.00 -44 0 -64 0 2 polygon
+1.000 0.000 0.000 scb
+(G) {/Helvetica 1.000 cf} 2 7 0 -64 0 pinlabel
+(S) {/Helvetica 1.000 cf} 2 13 0 0 -64 pinlabel
+(D) {/Helvetica 1.000 cf} 2 9 0 0 64 pinlabel
+sce
+mark v2 ( L=) v1 ( W=) v3 (spice:M%i %pD %pG %pS GND ) {/Times-Roman 1.000 cf} ctmk 4 0 -244 -139 infolabel
+(sim:n %pG %pD %pS) {/Times-Roman 1.000 cf} 2 4 0 -244 -187 infolabel
+mark v1 (W=) {/Helvetica 1.000 cf} ctmk 20 0 16 16 label
+mark v2 (L=) {/Helvetica 1.000 cf} ctmk 20 0 16 -16 label
+endgate
+} def
+
+/pmos {
+% -64 -64 161 128 bbox
+(3) (2) (pmos) 3 beginparm
+% fundamental
+1 1.00 -44 -28 -44 28 2 polygon
+1 1.00 -60 0 -64 0 2 polygon
+1 1.00 0 -64 0 -28 -32 -28 -32 28 0 28 0 64 6 polygon
+1 1.00 -52 0 8 0.00 360.00 xcarc
+1.000 0.000 0.000 scb
+(S) {/Helvetica 1.000 cf} 2 9 0 0 64 pinlabel
+(D) {/Helvetica 1.000 cf} 2 13 0 0 -64 pinlabel
+(G) {/Helvetica 1.000 cf} 2 7 0 -64 0 pinlabel
+sce
+mark v2 ( L=) v1 ( W=) v3 (spice:M%i %pD %pG %pS Vdd ) {/Times-Roman 1.000 cf} ctmk 4 0 -196 -139 infolabel
+(sim:p %pG %pD %pS) {/Times-Roman 1.000 cf} 2 4 0 -196 -187 infolabel
+mark v1 (W=) {/Helvetica 1.000 cf} ctmk 20 0 16 16 label
+mark v2 (L=) {/Helvetica 1.000 cf} ctmk 20 0 16 -16 label
+endgate
+} def
+
+/npn {
+% -64 -64 72 128 bbox
+(npn) 1 beginparm
+% fundamental
+1 1.00 -48 0 -64 0 2 polygon
+1 1.00 -48 48 -48 -48 2 polygon
+1 1.00 0 48 -48 22 2 polygon
+1 1.00 0 48 0 64 2 polygon
+1 1.00 0 -48 -48 -22 2 polygon
+1 1.00 0 -48 0 -64 2 polygon
+1.00 240 0 -48 arrowhead
+1.000 0.000 0.000 scb
+(C) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel
+(B) {/Times-Roman 1.000 cf} 2 7 0 -64 0 pinlabel
+(E) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel
+sce
+mark v1 (spice:Q%i %pC %pB %pE ) {/Times-Roman 1.000 cf} ctmk 4 0 -244 -139 infolabel
+(sim:b %pB %pE %pC) {/Times-Roman 1.000 cf} 2 4 0 -244 -187 infolabel
+endgate
+} def
+
+/pnp {
+% -64 -64 72 128 bbox
+(pnp) 1 beginparm
+% fundamental
+1 1.00 -48 0 -64 0 2 polygon
+1 1.00 -48 48 -48 -48 2 polygon
+1 1.00 0 48 -48 22 2 polygon
+1 1.00 0 48 0 64 2 polygon
+1 1.00 0 -48 -48 -22 2 polygon
+1 1.00 0 -48 0 -64 2 polygon
+1.00 120 -48 22 arrowhead
+1.000 0.000 0.000 scb
+(C) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel
+(B) {/Times-Roman 1.000 cf} 2 7 0 -64 0 pinlabel
+(E) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel
+sce
+mark v1 (spice:Q%i %pC %pB %pE ) {/Times-Roman 1.000 cf} ctmk 4 0 -244 -139 infolabel
+endgate
+} def
+
+
+% EndLib
diff --git a/psfiles/bridge.ps b/psfiles/bridge.ps
new file mode 100644
index 0000000..392f5ed
--- /dev/null
+++ b/psfiles/bridge.ps
@@ -0,0 +1,370 @@
+%!PS-Adobe-3.0
+%%Title: ~/tmp/tutorial/bridge
+%%Creator: Xcircuit v2.3
+%%CreationDate: Wed Jul 18 11:20:21 2001
+%%Pages: 1
+%%BoundingBox: 114 302 498 490
+%%DocumentNeededResources: font Helvetica font Times-Roman font Times-RomanISO
+%%+ font HelveticaISO font Symbol
+%%EndComments
+%%BeginProlog
+%
+% PostScript prolog for output from xcircuit
+% Version: 2.3
+%
+% Electrical circuit (and otherwise general) drawing program
+%
+% Written by Tim Edwards 8/5/93--5/16/01 (tim@bach.ece.jhu.edu)
+% The Johns Hopkins University
+%
+%%BeginResource: procset XCIRCproc 2.3 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 { 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
+ 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
+/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
+/CR { ns 0 /Bline Bline fscale0 neg add def Bline moveto } 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 /rotval exch def /just exch def
+ just 16 and 0 gt {0 1 dtransform gsave pagemat setmatrix idtransform
+ exch grestore 1 0 dtransform gsave pagemat setmatrix idtransform
+ exch grestore dup 0 eq {pop mul 0 gt} {3 1 roll pop pop 0 lt} ifelse
+ {-1 /just just dup 3 and 1 ne {3 xor} if def} {1} ifelse exch 0 lt
+ {-1 /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 0 exch {exch dup type /stringtype eq {true
+ charpath flattenpath} {exec} ifelse } repeat pop pathbbox grestore
+ 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
+ /showflag 1 def rotval rotate Kn currentpoint translate
+ /Bline 0 def /Tabs 0 array def /fscale 1.0 def /kY 0 def
+ {dup type /stringtype eq {show}{exec} ifelse} repeat grestore } def
+/pinlabel { hlevel 0 eq { /pspc 20 def label /pspc 0 def }
+ { pop pop pop pop pop {pop} repeat } ifelse } def
+/pinglobal { pinlabel } def
+/infolabel { pinlabel } def
+
+/scb { setrgbcolor } bind def /sce { defColor aload pop scb } bind def
+/cRedef {/defColor currentcolor 3 array astore def} def
+/begingate { /hlevel hlevel 1 add def /defColor currentcolor sce 3 array
+ astore def gsave sce translate 0 0 moveto dup 0 lt
+ {neg 1 sub -1 1 scale} if rotate dup scale } bind def
+/makeparm {3 string cvs dup length 1 add string /tstr exch def tstr exch
+ 1 exch putinterval tstr 0 (v) putinterval tstr cvn} bind def
+/beginparm { -1 1 {makeparm exch def} for
+ dup type /arraytype eq { aload length -1 1 {makeparm exch def}
+ for } if begingate } bind def
+/endgate { /hlevel hlevel 1 sub def grestore defColor aload pop cRedef
+ scb} bind def
+
+/hlevel 0 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 1 and 0 gt not {closepath} 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
+ style dup 256 ge exch 480 lt and { gsave 1 setgray eofill grestore } if
+ style 16 and 0 gt { gsave style 224 and -5 bitshift dup 7 lt
+ {gar exch get ppaint} { pop eofill } ifelse grestore } if
+ style 8 and 0 gt style 512 eq or { newpath } { stroke } ifelse grestore } 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 0 setlinejoin 6 setmiterlimit 0 0 0 scb cRedef } def
+/insertion {/PSobj save def /showpage {} def bop translate} 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
+
+/Times-Roman findfont dup length dict begin
+{1 index /FID ne {def} {pop pop} ifelse} forall
+/Encoding ISOLatin1Encoding def currentdict end
+/Times-RomanISO exch definefont pop
+
+/Helvetica findfont dup length dict begin
+{1 index /FID ne {def} {pop pop} ifelse} forall
+/Encoding ISOLatin1Encoding def currentdict end
+/HelveticaISO exch definefont pop
+
+% XCircuit output starts here.
+
+/inductor {
+% -14 -64 29 112 bbox
+begingate
+1 1.00 20 -28 20 -44 0 -48 0 -24 spline
+1 1.00 -20 -20 -20 -32 0 -28 0 -24 spline
+1 1.00 20 32 20 16 0 12 0 36 spline
+1 1.00 20 12 20 -4 0 -8 0 16 spline
+1 1.00 20 -8 20 -24 0 -28 0 -4 spline
+1 1.00 -20 20 -20 8 0 12 0 16 spline
+1 1.00 -20 0 -20 -12 0 -8 0 -4 spline
+1 1.00 0 -48 0 -64 2 polygon
+1 1.00 0 36 0 48 2 polygon
+1.000 0.000 0.000 scb
+(l.1) {/Times-Roman cf} 2 9 0 1.00 0 48 pinlabel
+(l.2) {/Times-Roman cf} 2 13 0 1.00 0 -64 pinlabel
+sce
+(spice:L%i %pl.1 %pl.2 1.0U) {/Times-Roman cf} 2 0 0 1.00 -208 -160 infolabel
+sce
+(sim:l %pl.1 %pl.2) {/Times-Roman cf} 2 0 0 1.00 -208 -208 infolabel
+endgate
+} def
+
+/Transformer {
+% -62 -64 108 112 bbox
+(?) 1 beginparm
+1.00 0 -48 0 inductor
+1 1.00 -16 48 -16 -64 2 polygon
+1 1.00 0 48 0 -64 2 polygon
+1.00 180 32 -16 inductor
+1.000 0.000 0.000 scb
+(1) {/Helvetica cf} 2 25 0 1.00 -48 48 pinlabel
+(2) {/Helvetica cf} 2 29 0 1.00 -48 -64 pinlabel
+(3) {/Helvetica cf} 2 25 0 1.00 32 48 pinlabel
+(4) {/Helvetica cf} 2 29 0 1.00 32 -64 pinlabel
+sce
+mark v1 (pcb:T) {/Times-Roman cf} ctmk 20 0 1.00 -96 -160 infolabel
+endgate
+} def
+
+/circle {
+% -6 -12 28 24 bbox
+% trivial
+begingate
+1 1.00 16 0 6 0.00 360.00 xcarc
+1 1.00 0 0 10 0 2 polygon
+1.000 0.000 0.000 scb
+(out) {/Times-Roman cf} 2 4 0 1.00 16 0 pinlabel
+(out) {/Times-Roman cf} 2 7 0 1.00 0 0 pinlabel
+endgate
+} def
+
+/Diode {
+% -18 -48 36 96 bbox
+(?) 1 beginparm
+248 1.00 -18 -16 0 16 18 -16 3 polygon
+1 1.00 0 -48 0 -16 2 polygon
+1 1.00 0 48 0 16 2 polygon
+1 1.00 -18 16 18 16 2 polygon
+1.000 0.000 0.000 scb
+(1) {/Times-Roman cf} 2 9 0 1.00 0 48 pinlabel
+(2) {/Times-Roman cf} 2 13 0 1.00 0 -48 pinlabel
+sce
+mark v1 (pcb:D) {/Helvetica cf} ctmk 20 0 1.00 -64 -144 infolabel
+mark ( %p1 %p2 diode) v1 (spice:D) {/Times-Roman cf} ctmk 4 0 1.00 -64 -192
+endgate
+} def
+
+/rectifier {
+% -112 -48 192 192 bbox
+begingate
+1.00 315 -64 96 Diode
+1.00 225 32 96 Diode
+1.00 225 -64 0 Diode
+1.00 315 32 0 Diode
+1 1.00 -30 130 -16 144 -2 130 3 polygon
+1 1.00 66 62 80 48 66 34 3 polygon
+1 1.00 -2 -34 -16 -48 -30 -34 3 polygon
+1 1.00 -98 34 -112 48 -98 62 3 polygon
+endgate
+} def
+
+/dot {
+% -10 -10 20 20 bbox
+% trivial
+begingate
+248 1.00 0 0 6 0.00 360.00 xcarc
+1.000 0.000 0.000 scb
+(x) {/Times-Roman cf} 2 29 0 1.00 0 0 pinlabel
+endgate
+} def
+
+/jumper {
+% -4 -14 18 28 bbox
+% trivial
+begingate
+1 1.00 0 0 10 -90.00 90.00 xcarc
+1 1.00 0 10 0 16 2 polygon
+1 1.00 0 -10 0 -16 2 polygon
+1.000 0.000 0.000 scb
+(a) {/Times-Roman cf} 2 1 0 1.00 0 16 pinlabel
+(a) {/Times-Roman cf} 2 13 0 1.00 0 -16 pinlabel
+endgate
+} def
+
+/gnd {
+% -32 -60 64 68 bbox
+% trivial
+begingate
+1 1.00 0 0 0 -32 2 polygon
+1 1.00 -32 -32 32 -32 2 polygon
+1 1.00 -18 -46 18 -46 2 polygon
+1 1.00 -4 -60 4 -60 2 polygon
+1.000 0.000 0.000 scb
+(GND) {/Times-Roman cf} 2 1 0 1.00 0 0 pinglobal
+endgate
+} def
+
+/Capacitor {
+% -32 -64 186 128 bbox
+(1.0) (p) (?) 3 beginparm
+1 1.00 0 -64 0 -6 2 polygon
+1 1.00 0 64 0 6 2 polygon
+1 1.00 -32 6 32 6 2 polygon
+1 1.00 -32 -6 32 -6 2 polygon
+1.000 0.000 0.000 scb
+(1) {/Times-Roman cf} 2 9 0 1.00 0 64 pinlabel
+(2) {/Times-Roman cf} 2 13 0 1.00 0 -64 pinlabel
+sce
+mark v2 v1 ( %p1 %p2 ) v3 (spice:C) {/Times-RomanISO cf} ctmk 4 0 1.00 -208
+-160 infolabel
+sce
+(sim:c %p1 %p2) {/Times-Roman cf} 2 4 0 1.00 -208 -208 infolabel
+mark (F) v2 {hS} v1 {/Times-RomanISO cf} ctmk 20 0 1.00 48 0 label
+sce
+mark v3 (pcb:C) {/Times-Roman cf} ctmk 20 0 1.00 -208 -256 infolabel
+endgate
+} def
+
+/Polarized {
+% -32 -64 176 128 bbox
+(1.0) (p) (?) 3 beginparm
+1 1.00 0 -64 0 -6 2 polygon
+1 1.00 0 64 0 6 2 polygon
+1 1.00 -32 6 32 6 2 polygon
+1 1.00 0 -80 74 66.00 114.00 xcarc
+1.000 0.000 0.000 scb
+(1) {/Times-Roman cf} 2 9 0 1.00 0 64 pinlabel
+(2) {/Times-Roman cf} 2 13 0 1.00 0 -64 pinlabel
+sce
+mark v2 v1 ( %p1 %p2 ) v3 (spice:C) {/Times-RomanISO cf} ctmk 4 0 1.00 -208
+-160 infolabel
+sce
+(sim:e %p1 %p2) {/Times-Roman cf} 2 4 0 1.00 -208 -208 infolabel
+mark (F) v2 {hS} v1 {/Times-RomanISO cf} ctmk 20 0 1.00 48 0 label
+sce
+mark v3 (pcb:C) {/Times-Roman cf} ctmk 20 0 1.00 -208 -256 infolabel
+endgate
+} def
+
+%%Page: 1 1
+%%PageOrientation: Portrait
+/pgsave save def bop
+% 529 953 offsets
+1.0000 inchscale
+2.6000 setlinewidth
+
+1.00 0 497 1065 Transformer
+1 1.00 449 1113 449 1193 401 1193 3 polygon
+1 1.00 449 1001 449 937 401 937 3 polygon
+1.00 -1 401 1193 circle
+1.00 -1 401 937 circle
+1.000 0.000 0.000 scb
+(+) {/Symbol cf} (V) {/Helvetica cf} 4 23 0 1.00 385 1193 pinlabel
+(-) {/Symbol cf} (V) {/Helvetica cf} 4 23 0 1.00 385 937 pinlabel
+sce
+1.00 0 785 1017 rectifier
+1 1.00 529 1113 529 1193 769 1193 769 1161 4 polygon
+1 1.00 529 1001 529 937 769 937 769 969 4 polygon
+1.00 0 769 969 dot
+1.00 0 769 1161 dot
+1 1.00 673 1065 641 1065 641 953 3 polygon
+1 1.00 641 921 641 873 1201 873 3 polygon
+1 1.00 865 1065 1201 1065 2 polygon
+1 1.00 961 1065 961 1033 2 polygon
+1 1.00 1041 1065 1041 1033 2 polygon
+1 1.00 961 905 961 873 2 polygon
+1 1.00 1041 905 1041 873 2 polygon
+1.00 0 1041 873 dot
+1.00 0 961 873 dot
+1.00 0 961 1065 dot
+1.00 0 1041 1065 dot
+1.00 0 865 1065 dot
+1.00 0 673 1065 dot
+1.00 -1 641 937 jumper
+1.00 0 641 873 gnd
+1.00 0 641 873 dot
+1.00 0 1201 873 circle
+1.00 0 1201 1065 circle
+1.000 0.000 0.000 scb
+(Vout) {0 -80 Kn} {/Helvetica cf} 3 28 0 1.00 1217 1065 pinlabel
+sce
+(+) {/Symbol cf} 2 20 0 1.00 1249 1065 label
+(-) {/Symbol cf} 2 20 0 1.00 1249 873 label
+(Bridge Rectifier) {/Helvetica cf} 2 24 0 1.00 369 1273 label
+1.00 -1 961 969 [(1.0) (\265) ] Capacitor
+1.00 0 1041 969 [(10) (\265) ] Polarized
+(1N914) {hS} (\327) {hS} (4) {/HelveticaISO cf} 6 24 0 1.00 849 1145 label
+pgsave restore showpage
+
+%%Trailer
+XCIRCsave restore
+%%EOF
diff --git a/psfiles/buses.ps b/psfiles/buses.ps
new file mode 100644
index 0000000..76b21a7
--- /dev/null
+++ b/psfiles/buses.ps
@@ -0,0 +1,245 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Title: buses
+%%Creator: Xcircuit v2.3
+%%CreationDate: Mon Nov 5 11:36:02 2001
+%%Pages: 1
+%%BoundingBox: 68 68 712 496
+%%DocumentNeededResources: font Helvetica font Helvetica-Oblique
+%%EndComments
+%%BeginProlog
+%
+% PostScript prolog for output from xcircuit
+% Version: 2.3
+%
+% Electrical circuit (and otherwise general) drawing program
+%
+% Written by Tim Edwards 8/5/93--5/16/01 (tim@bach.ece.jhu.edu)
+% The Johns Hopkins University
+%
+%%BeginResource: procset XCIRCproc 2.3 2
+% 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 { 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
+ 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
+/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
+/CR { ns 0 /Bline Bline fscale0 neg add def Bline moveto } 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 /rotval exch def /just exch def
+ just 16 and 0 gt {0 1 dtransform gsave pagemat setmatrix idtransform
+ exch grestore 1 0 dtransform gsave pagemat setmatrix idtransform
+ exch grestore dup 0 eq {pop mul 0 gt} {3 1 roll pop pop 0 lt} ifelse
+ {-1 /just just dup 3 and 1 ne {3 xor} if def} {1} ifelse exch 0 lt
+ {-1 /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 0 exch {exch dup type /stringtype eq {true
+ charpath flattenpath} {exec} ifelse } repeat pop pathbbox grestore
+ 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
+ /showflag 1 def rotval rotate Kn currentpoint translate
+ /Bline 0 def /Tabs 0 array def /fscale 1.0 def /kY 0 def
+ {dup type /stringtype eq {show}{exec} ifelse} repeat grestore } def
+/pinlabel { 4 index 32 and 0 ne hlevel 0 eq or { /pspc 20 def label
+ /pspc 0 def } { pop pop pop pop pop {pop} repeat } ifelse } def
+/pinglobal { pinlabel } def
+/infolabel { pinlabel } def
+
+/scb { setrgbcolor } bind def /sce { defColor aload pop scb } bind def
+/cRedef {/defColor currentcolor 3 array astore def} def
+/begingate { /hlevel hlevel 1 add def /defColor currentcolor sce 3 array
+ astore def gsave sce translate 0 0 moveto dup 0 lt
+ {neg 1 sub -1 1 scale} if rotate dup scale } bind def
+/makeparm {3 string cvs dup length 1 add string /tstr exch def tstr exch
+ 1 exch putinterval tstr 0 (v) putinterval tstr cvn} bind def
+/beginparm { -1 1 {makeparm exch def} for
+ dup type /arraytype eq { aload length -1 1 {makeparm exch def}
+ for } if begingate } bind def
+/endgate { /hlevel hlevel 1 sub def grestore defColor aload pop cRedef
+ scb} bind def
+
+/hlevel 0 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 1 and 0 gt not {closepath} 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
+ style dup 256 ge exch 480 lt and { gsave 1 setgray eofill grestore } if
+ style 16 and 0 gt { gsave style 224 and -5 bitshift dup 7 lt
+ {gar exch get ppaint} { pop eofill } ifelse grestore } if
+ style 8 and 0 gt style 512 eq or { newpath } { stroke } ifelse grestore } 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 0 setlinejoin 6 setmiterlimit 0 0 0 scb cRedef } def
+/insertion {/PSobj save def /showpage {} def bop translate} 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.
+
+/dbus1 {
+% -608 0 1216 42 bbox
+begingate
+1.000 0.000 0.000 scb
+(d[3]) {/Helvetica cf} 2 23 0 1.00 -608 -64 pinlabel
+(d[2]) {/Helvetica cf} 2 23 0 1.00 -608 -32 pinlabel
+(d[1]) {/Helvetica cf} 2 23 0 1.00 -608 0 pinlabel
+(d[0]) {/Helvetica cf} 2 23 0 1.00 -608 32 pinlabel
+(d[3]) {/Helvetica cf} 2 20 0 1.00 608 -64 pinlabel
+(d[2]) {/Helvetica cf} 2 20 0 1.00 608 -32 pinlabel
+(d[1]) {/Helvetica cf} 2 20 0 1.00 608 0 pinlabel
+(d[0]) {/Helvetica cf} 2 20 0 1.00 608 32 pinlabel
+sce
+(data bus) {/Helvetica cf} 2 17 0 1.00 -64 16 label
+1 1.00 -608 0 608 0 2 polygon
+endgate
+} def
+
+/chip1 {
+% -96 -96 192 192 bbox
+(?) 1 beginparm
+0 1.00 -96 -96 -96 96 96 96 96 -96 4 polygon
+( data ) {/Helvetica cf} 2 23 0 1.00 96 0 label
+1.000 0.000 0.000 scb
+(p0) {/Helvetica cf} 2 20 0 1.00 96 48 pinlabel
+(p1) {/Helvetica cf} 2 20 0 1.00 96 16 pinlabel
+(p2) {/Helvetica cf} 2 20 0 1.00 96 -16 pinlabel
+(p3) {/Helvetica cf} 2 20 0 1.00 96 -48 pinlabel
+sce
+mark v1 (Chip ) {/Helvetica cf} ctmk 21 0 1.00 0 64 label
+endgate
+} def
+
+/arrowhead {
+% -12 -32 24 36 bbox
+% trivial
+begingate
+8 -28 beginpath
+3 -18 3 -15 0 0 curveto
+-3 -15 -3 -18 -8 -28 curveto
+-2 -26 2 -26 8 -28 curveto
+249 1.00 endpath
+endgate
+} def
+
+/arrow {
+% -12 -40 24 80 bbox
+% trivial
+begingate
+1 0.80 0 -40 0 20 2 polygon
+1.00 0 0 40 arrowhead
+endgate
+} def
+
+%%Page: 1 1
+%%PageOrientation: Portrait
+/pgsave save def bop
+% 1152 692 offsets
+1.0000 inchscale
+2.6000 setlinewidth
+
+1 1.00 288 756 288 884 672 884 672 756 4 polygon
+1 1.00 352 1012 352 884 608 884 608 1012 4 polygon
+1 1.00 432 1012 432 884 752 884 752 756 4 polygon
+1 1.00 224 1012 224 884 864 884 864 756 4 polygon
+1 2.00 224 884 864 884 2 polygon
+1 1.00 1312 1108 1312 980 1728 980 1728 596 1888 596 5 polygon
+1 1.00 1408 1108 1408 980 1728 980 1728 692 1888 692 5 polygon
+1 1.00 1584 964 1600 996 2 polygon
+(2) {/Helvetica cf} 2 17 0 1.00 1584 996 label
+1.000 0.000 0.000 scb
+(b\(1\)) {/Helvetica cf} 2 17 0 1.00 1312 1108 pinlabel
+(b\(2\)) {/Helvetica cf} 2 17 0 1.00 1408 1108 pinlabel
+(a[0]) {/Helvetica cf} 2 17 0 1.00 224 1012 pinlabel
+(a[1]) {/Helvetica cf} 2 17 0 1.00 352 1012 pinlabel
+(a[2]) {/Helvetica cf} 2 17 0 1.00 432 1012 pinlabel
+(a[3]) {/Helvetica cf} 2 29 0 1.00 288 756 pinlabel
+sce
+1.00 0 1024 340 dbus1
+1.00 0 320 324 [(1) ] chip1
+1.00 -1 1728 324 [(2) ] chip1
+(Three styles of buses in xcircuit) {ul} {/Helvetica cf} 3 21 0 1.00 992 1300
+label
+(1\) \252standard\272 method) {/Helvetica cf} 2 16 0 1.00 192 1172 label
+(" to see actual pins.) {/Helvetica cf} (Options->Show Pin Positions)
+{/Helvetica-Oblique cf} (2\) \252sneaky\272 method. Use ") {/Helvetica cf} 6
+16 0 1.00 224 500 label
+1.00 120 448 388 arrow
+(real pin position \(normally not seen\)) {/Helvetica cf} 2 16 0 0.80 496 420
+label
+1.00 60 992 308 arrow
+(named the same.) {CR} (Pins on either end are) {CR} (The bus is a subcircuit.)
+{/Helvetica cf} 6 28 0 0.80 1040 276 label
+pgsave restore showpage
+
+%%Trailer
+XCIRCsave restore
+%%EOF
diff --git a/psfiles/dff.ps b/psfiles/dff.ps
new file mode 100644
index 0000000..a15ffed
--- /dev/null
+++ b/psfiles/dff.ps
@@ -0,0 +1,228 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Title: dff
+%%Creator: Xcircuit v2.5
+%%CreationDate: Tue Dec 18 16:50:59 2001
+%%Pages: 1
+%%BoundingBox: 68 68 371 229
+%%DocumentNeededResources: font Helvetica font Times-Roman
+%%EndComments
+%%BeginProlog
+%
+% PostScript prolog for output from xcircuit
+% Version: 2.4
+%
+% Electrical circuit (and otherwise general) drawing program
+%
+% Written by Tim Edwards 8/5/93--5/16/01 (tim@bach.ece.jhu.edu)
+% The Johns Hopkins University
+%
+%%BeginResource: procset XCIRCproc 2.4 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 { 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
+ 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
+/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
+/CR { ns 0 /Bline Bline fscale0 neg add def Bline moveto } 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
+ /just exch def 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 /Tabs 0 array def /fscale 1.0 def
+ /kY 0 def gsave dup 1 add copy 0 exch 1 0 dtransform exch atan rotate
+ {exch dup type /stringtype eq {true charpath flattenpath} {exec}
+ ifelse } repeat pop pathbbox grestore 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 /stringtype eq {show}{exec} ifelse}
+ repeat grestore } def
+/pinlabel { 4 index 32 and 0 ne hlevel 0 eq or { /pspc 20 def label
+ /pspc 0 def } { pop pop pop pop pop {pop} repeat } ifelse } def
+/pinglobal { pinlabel } def
+/infolabel { pinlabel } def
+
+/scb { setrgbcolor } bind def /sce { defColor aload pop scb } bind def
+/cRedef {/defColor currentcolor 3 array astore def} def
+/begingate { /hlevel hlevel 1 add def /defColor currentcolor sce 3 array
+ astore def gsave sce translate 0 0 moveto neg rotate dup abs scale
+ } bind def
+/makeparm {3 string cvs dup length 1 add string /tstr exch def tstr exch
+ 1 exch putinterval tstr 0 (v) putinterval tstr cvn} bind def
+/beginparm { -1 1 {makeparm exch def} for
+ dup type /arraytype eq { aload length -1 1 {makeparm exch def}
+ for } if begingate } bind def
+/endgate { /hlevel hlevel 1 sub def grestore defColor aload pop cRedef
+ scb} bind def
+
+/hlevel 0 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 1 and 0 gt not {closepath} 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
+ style dup 256 ge exch 480 lt and { gsave 1 setgray eofill grestore } if
+ style 16 and 0 gt { gsave style 224 and -5 bitshift dup 7 lt
+ {gar exch get ppaint} { pop eofill } ifelse grestore } if
+ style 8 and 0 gt style 512 eq or { newpath } { stroke } ifelse grestore } 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 0 setlinejoin 6 setmiterlimit 0 0 0 scb cRedef } def
+/insertion {/PSobj save def /showpage {} def bop translate} 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.
+
+/quadnand {
+% -64 -48 128 96 bbox
+(?) (1) (1) (2) (3) 5 beginparm
+1 1.00 0 -48 -64 -48 -64 48 0 48 4 polygon
+1 1.00 56 0 8 0.00 360.00 xcarc
+1 1.00 0 0 48 -90.00 90.00 xcarc
+1.000 0.000 0.000 scb
+mark v5 {/Times-Roman cf} ctmk 4 0 1.00 64 0 pinlabel
+mark v3 {/Times-Roman cf} ctmk 7 0 1.00 -64 32 pinlabel
+mark v4 {/Times-Roman cf} ctmk 7 0 1.00 -64 -32 pinlabel
+sce
+mark v2 (-) v1 (pcb:U) {/Helvetica cf} ctmk 20 0 1.00 -80 -96 infolabel
+mark v2 (7400-) {/Helvetica cf} ctmk 21 0 0.50 -8 0 label
+endgate
+} def
+
+/dot {
+% -10 -10 20 20 bbox
+% trivial
+begingate
+248 1.00 0 0 6 0.00 360.00 xcarc
+1.000 0.000 0.000 scb
+(x) {/Times-Roman cf} 2 29 0 1.00 0 0 pinlabel
+endgate
+} def
+
+/circle {
+% -6 -12 28 24 bbox
+% trivial
+begingate
+1 1.00 16 0 6 0.00 360.00 xcarc
+1 1.00 0 0 10 0 2 polygon
+1.000 0.000 0.000 scb
+(out) {/Times-Roman cf} 2 4 0 1.00 16 0 pinlabel
+(out) {/Times-Roman cf} 2 7 0 1.00 0 0 pinlabel
+endgate
+} def
+
+%%Page: 1 1
+%%PageOrientation: Portrait
+/pgsave save def bop
+% 978 336 offsets
+1.0000 inchscale
+2.6000 setlinewidth
+
+1.00 0 450 240 [(?) (4) (12) (13) (11) ] quadnand
+1.00 0 450 432 [(?) (3) (9) (10) (8) ] quadnand
+1.00 0 770 432 [(?) (2) (4) (5) (6) ] quadnand
+1.00 0 770 240 [(?) (1) (1) (2) (3) ] quadnand
+1 1.00 834 240 882 240 882 288 674 352 674 400 706 400 6 polygon
+1 1.00 834 432 882 432 882 384 674 320 674 272 706 272 6 polygon
+1 1.00 386 464 306 464 2 polygon
+1 1.00 386 208 306 208 2 polygon
+1.00 0 882 432 dot
+1.00 0 882 240 dot
+1.00 0 914 432 circle
+1.00 0 914 240 circle
+-1.00 0 306 464 circle
+-1.00 0 306 208 circle
+1 1.00 882 432 914 432 2 polygon
+1 1.00 882 240 914 240 2 polygon
+1 1.00 706 464 594 464 562 432 514 432 4 polygon
+1 1.00 706 208 594 208 562 240 514 240 4 polygon
+1 1.00 546 432 546 336 354 336 354 272 386 272 5 polygon
+1 1.00 386 400 322 400 322 208 3 polygon
+1.00 0 322 208 dot
+1.00 0 546 432 dot
+1.000 0.000 0.000 scb
+(Q) {/Helvetica cf} 2 20 0 1.00 930 432 pinlabel
+(Q) {ol} {/Helvetica cf} 3 20 0 1.00 930 240 pinlabel
+(D) {/Helvetica cf} 2 23 0 1.00 290 464 pinlabel
+(CLK) {/Helvetica cf} 2 23 0 1.00 290 208 pinlabel
+sce
+(D-FF implementation in 7400 IC) {/Helvetica cf} 2 17 0 1.00 594 576 label
+pgsave restore showpage
+
+%%Trailer
+XCIRCsave restore
+%%EOF
diff --git a/psfiles/filter.ps b/psfiles/filter.ps
new file mode 100644
index 0000000..deb06e5
--- /dev/null
+++ b/psfiles/filter.ps
@@ -0,0 +1,260 @@
+%%BeginProlog
+%
+% PostScript prolog for output from xcircuit
+% Version: 2.0
+%
+% Electrical circuit (and otherwise general) drawing program
+%
+% Written by Tim Edwards 8/5/93--2/25/99 (tim@bach.ece.jhu.edu)
+% The Johns Hopkins University
+%
+%%BeginResource: procset XCIRCproc 2.0 2
+% 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
+/cf { dup type /realtype eq {40 mul /fscale exch def} if dup /xfont exch def
+ findfont fscale scalefont setfont } def
+/Ss { gsave 0.67 dup scale gsave mty neg rmoveto
+ glevel 1 add /glevel exch def } def
+/ss { gsave 0.67 dup scale gsave mty 0.5 mul rmoveto
+ glevel 1 add /glevel exch def } def
+/ns { currentpoint transform % preserve x position!
+ glevel {grestore} repeat /glevel 0 def
+ itransform pop currentpoint pop sub 0 rmoveto } def
+/ul { showflag 1 eq { 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 { showflag 1 eq { 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
+/stW { gsave true charpath flattenpath pathbbox pop exch pop sub
+ grestore } def
+/bs { stW 0 rmoveto } def
+/pspc 0 def
+/qS { (aa) stW (a a) stW sub 4 div 0 rmoveto } def
+/hS { qS qS } def
+/textx { dup 1 add copy 0 exch { exch dup type /stringtype eq
+ {stringwidth pop add}{exec} ifelse } repeat neg ns } def
+/mty { 0 topmat setmatrix (A) true charpath flattenpath pathbbox exch
+ pop exch sub exch pop neg grestore } def
+/texty { gsave 2 copy pop exec mty } def
+/tcenter { textx grestore 0.5 mul 0 rmoveto } def
+/tright { textx grestore fspc sub 0 rmoveto } def
+/tmiddle { texty 0.5 mul rmoveto } def
+/ttop { texty fspc sub rmoveto } def
+/tshow {{ dup type /stringtype eq {show}{exec} ifelse} repeat ns } def
+
+/label { gsave translate 0 0 moveto rotate /just exch def just 16 and 0 gt
+ {0 1 dtransform gsave pagemat setmatrix idtransform exch grestore
+ 1 0 dtransform gsave pagemat setmatrix idtransform exch grestore
+ dup 0 eq {pop mul 0 gt} {3 1 roll pop pop 0 lt} ifelse
+ {-1 /just just dup 3 and 1 ne {3 xor} if def} {1} ifelse exch 0 lt
+ {-1 /just just dup 12 and 4 ne {12 xor} if def} {1} ifelse scale } if
+ /glevel 0 def /showflag 0 def /fspc pspc def
+ just 1 and 0 gt {gsave just 2 and 0 gt {tright}{tcenter} ifelse}
+ {fspc 0 rmoveto} ifelse
+ just 4 and 0 gt {just 8 and 0 gt {ttop}{tmiddle} ifelse}
+ {0 fspc rmoveto} ifelse
+ /showflag 1 def tshow grestore } def
+/pinlabel { hlevel 0 eq { /pspc 20 def label /pspc 0 def }
+ { pop pop pop pop {pop} repeat } ifelse } def
+/pinglobal { pinlabel } def
+/infolabel { pinlabel } def
+
+/begingate { /hlevel hlevel 1 add def gsave translate 0 0 moveto dup 0 lt
+ {neg 1 sub -1 1 scale} if rotate dup scale } bind def
+/makeparm {3 string cvs dup length 1 add string /tstr exch def tstr exch
+ 1 exch putinterval tstr 0 (v) putinterval tstr cvn} bind def
+/beginparm { -1 1 {makeparm exch def} for
+ dup type /arraytype eq { aload length -1 1 {makeparm exch def}
+ for } if begingate } bind def
+/endgate { /hlevel hlevel 1 sub def grestore } bind def
+
+/hlevel 0 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 1 and 0 gt not {closepath} 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
+ style dup 256 ge exch 480 lt and { gsave 1 setgray eofill grestore } if
+ style 16 and 0 gt { gsave style 224 and -5 bitshift dup 7 lt
+ {gar exch get ppaint} { pop eofill } ifelse grestore } if
+ style 8 and 0 gt { newpath } { stroke } ifelse grestore } def
+/scb { gsave setrgbcolor } bind def /sce { grestore } bind 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 0 setlinejoin 6 setmiterlimit 0 setgray } 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.
+
+/dot {
+% -10 -10 20 20 bbox
+begingate
+248 1.00 0 0 6 0.00 360.00 xcarc
+endgate
+} def
+
+/circle {
+% -6 -12 28 24 bbox
+begingate
+1 1.00 16 0 6 0.00 360.00 xcarc
+1 1.00 0 0 10 0 2 polygon
+1.000 0.000 0.000 scb
+(out) {/Times-Roman 1.000 cf} 2 4 0 16 0 pinlabel
+(out) {/Times-Roman 1.000 cf} 2 7 0 0 0 pinlabel
+sce
+endgate
+} def
+
+/gnd {
+% -32 -60 64 68 bbox
+begingate
+1 1.00 0 0 0 -32 2 polygon
+1 1.00 -32 -32 32 -32 2 polygon
+1 1.00 -18 -46 18 -46 2 polygon
+1 1.00 -4 -60 4 -60 2 polygon
+1.000 0.000 0.000 scb
+(GND) {/Times-Roman 1.000 cf} 2 1 0 0 0 pinglobal
+sce
+endgate
+} def
+
+/resistor {
+% -14 -64 151 128 bbox
+(1.0) (k) 2 beginparm
+% fundamental
+1 1.00 0 64 0 36 2 polygon
+1 1.00 0 -64 0 -36 2 polygon
+1 1.00 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
+(r.1) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel
+(r.2) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel
+sce
+(spice:R%i %pr.1 %pr.2 %v"1.0"%v"k") {/Times-Roman 1.000 cf} 2 0 0 -208 -160 infolabel
+(sim:r %pr.1 %pr.2) {/Times-Roman 1.000 cf} 2 0 0 -208 -208 infolabel
+(W) {/Symbol 1.000 cf} v2 {hS} v1 {/Helvetica 1.000 cf} 6 20 0 32 0 label
+endgate
+} def
+
+/polarized {
+% -32 -64 177 128 bbox
+(1.0) (p) 2 beginparm
+% fundamental
+1 1.00 0 -64 0 -6 2 polygon
+1 1.00 0 64 0 6 2 polygon
+1 1.00 -32 6 32 6 2 polygon
+1 1.00 0 -80 74 66.00 114.00 xcarc
+1.000 0.000 0.000 scb
+(t) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel
+(b) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel
+sce
+(spice:C%i %pt %pb %v"1.0"%v"p") {/Times-Roman 1.000 cf} 2 0 0 -208 -160 infolabel
+(sim:e %pt %pb %pb) {/Times-Roman 1.000 cf} 2 0 0 -208 -208 infolabel
+(F) v2 {hS} v1 {/Helvetica 1.000 cf} 5 20 0 48 0 label
+endgate
+} def
+
+/source {
+% -32 -64 64 128 bbox
+% hidden
+begingate
+1 1.00 0 0 32 0.00 360.00 xcarc
+1 1.00 0 32 0 64 2 polygon
+1 1.00 0 -32 0 -64 2 polygon
+endgate
+} def
+
+/acsource {
+% -32 -64 211 128 bbox
+(5) (0) (1) (k) 4 beginparm
+% fundamental
+1.00 0 0 0 source
+1 0.80 0 -48 0 48 -16 0 16 0 spline
+1.000 0.000 0.000 scb
+(s.p) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel
+(s.m) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel
+sce
+(spice:V%i %ps.m %ps.p SIN\(%v"0" %v"5" %v"1"%v"k"\)) {/Helvetica 1.000 cf} 2 20 0 -336 -160 infolabel
+(offset) {ss} (V) {hS} v2 {/Helvetica 1.000 cf} 6 20 0 48 0 label
+(p-p) {ss} (V) {hS} v1 {/Helvetica 1.000 cf} 6 20 0 48 48 label
+(Hz) v4 {hS} v3 {/Helvetica 1.000 cf} 5 20 0 48 -48 label
+endgate
+} def
+
+%%Page: 1 1
+%%PageOrientation: Portrait
+/pgsave save def bop
+% 912 464 offsets
+1.0000 inchscale
+2.6000 setlinewidth
+
+1 1.00 528 528 528 592 784 592 3 polygon
+1 1.00 528 400 528 336 784 336 3 polygon
+1 1.00 784 464 976 464 2 polygon
+1 1.00 784 336 976 336 2 polygon
+1.00 0 784 336 dot
+1.00 0 784 464 dot
+1.00 0 976 464 circle
+1.00 0 976 336 circle
+1.00 -1 464 336 circle
+1 1.00 464 336 528 336 2 polygon
+1 1.00 528 592 464 592 2 polygon
+1.00 -1 464 592 circle
+1.00 0 640 336 gnd
+1.00 0 640 336 dot
+1.00 0 528 336 dot
+1.00 0 528 592 dot
+1.000 0.000 0.000 scb
+(Vin) {/Helvetica 1.000 cf} 2 23 0 448 592 pinlabel
+(Vout) {/Helvetica 1.000 cf} 2 20 0 992 464 pinlabel
+sce
+1.00 0 784 528 [(10) (k) ] resistor
+1.00 0 784 400 [(1.0) (u) ] polarized
+1.00 0 528 464 [(5) (0) (5) (k) ] acsource
+pgsave restore showpage
+
+%%Trailer
+XCIRCsave restore
+%%EOF
diff --git a/psfiles/integrator.ps b/psfiles/integrator.ps
new file mode 100644
index 0000000..c290875
--- /dev/null
+++ b/psfiles/integrator.ps
@@ -0,0 +1,327 @@
+%%BeginProlog
+%
+% PostScript prolog for output from xcircuit
+% Version: 2.0
+%
+% Electrical circuit (and otherwise general) drawing program
+%
+% Written by Tim Edwards 8/5/93--2/25/99 (tim@bach.ece.jhu.edu)
+% The Johns Hopkins University
+%
+%%BeginResource: procset XCIRCproc 2.0 2
+% 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
+/cf { dup type /realtype eq {40 mul /fscale exch def} if dup /xfont exch def
+ findfont fscale scalefont setfont } def
+/Ss { gsave 0.67 dup scale gsave mty neg rmoveto
+ glevel 1 add /glevel exch def } def
+/ss { gsave 0.67 dup scale gsave mty 0.5 mul rmoveto
+ glevel 1 add /glevel exch def } def
+/ns { currentpoint transform % preserve x position!
+ glevel {grestore} repeat /glevel 0 def
+ itransform pop currentpoint pop sub 0 rmoveto } def
+/ul { showflag 1 eq { 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 { showflag 1 eq { 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
+/stW { gsave true charpath flattenpath pathbbox pop exch pop sub
+ grestore } def
+/bs { stW 0 rmoveto } def
+/pspc 0 def
+/qS { (aa) stW (a a) stW sub 4 div 0 rmoveto } def
+/hS { qS qS } def
+/textx { dup 1 add copy 0 exch { exch dup type /stringtype eq
+ {stringwidth pop add}{exec} ifelse } repeat neg ns } def
+/mty { 0 topmat setmatrix (A) true charpath flattenpath pathbbox exch
+ pop exch sub exch pop neg grestore } def
+/texty { gsave 2 copy pop exec mty } def
+/tcenter { textx grestore 0.5 mul 0 rmoveto } def
+/tright { textx grestore fspc sub 0 rmoveto } def
+/tmiddle { texty 0.5 mul rmoveto } def
+/ttop { texty fspc sub rmoveto } def
+/tshow {{ dup type /stringtype eq {show}{exec} ifelse} repeat ns } def
+
+/label { gsave translate 0 0 moveto rotate /just exch def just 16 and 0 gt
+ {0 1 dtransform gsave pagemat setmatrix idtransform exch grestore
+ 1 0 dtransform gsave pagemat setmatrix idtransform exch grestore
+ dup 0 eq {pop mul 0 gt} {3 1 roll pop pop 0 lt} ifelse
+ {-1 /just just dup 3 and 1 ne {3 xor} if def} {1} ifelse exch 0 lt
+ {-1 /just just dup 12 and 4 ne {12 xor} if def} {1} ifelse scale } if
+ /glevel 0 def /showflag 0 def /fspc pspc def
+ just 1 and 0 gt {gsave just 2 and 0 gt {tright}{tcenter} ifelse}
+ {fspc 0 rmoveto} ifelse
+ just 4 and 0 gt {just 8 and 0 gt {ttop}{tmiddle} ifelse}
+ {0 fspc rmoveto} ifelse
+ /showflag 1 def tshow grestore } def
+/pinlabel { hlevel 0 eq { /pspc 20 def label /pspc 0 def }
+ { pop pop pop pop {pop} repeat } ifelse } def
+/pinglobal { pinlabel } def
+/infolabel { pinlabel } def
+
+/begingate { /hlevel hlevel 1 add def gsave translate 0 0 moveto dup 0 lt
+ {neg 1 sub -1 1 scale} if rotate dup scale } bind def
+/makeparm {3 string cvs dup length 1 add string /tstr exch def tstr exch
+ 1 exch putinterval tstr 0 (v) putinterval tstr cvn} bind def
+/beginparm { -1 1 {makeparm exch def} for
+ dup type /arraytype eq { aload length -1 1 {makeparm exch def}
+ for } if begingate } bind def
+/endgate { /hlevel hlevel 1 sub def grestore } bind def
+
+/hlevel 0 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 1 and 0 gt not {closepath} 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
+ style dup 256 ge exch 480 lt and { gsave 1 setgray eofill grestore } if
+ style 16 and 0 gt { gsave style 224 and -5 bitshift dup 7 lt
+ {gar exch get ppaint} { pop eofill } ifelse grestore } if
+ style 8 and 0 gt { newpath } { stroke } ifelse grestore } def
+/scb { gsave setrgbcolor } bind def /sce { grestore } bind 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 0 setlinejoin 6 setmiterlimit 0 setgray } 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.
+
+/nmos {
+% -64 -64 64 128 bbox
+begingate
+% fundamental
+1 1.00 0 -64 0 -28 -32 -28 -32 28 0 28 0 64 6 polygon
+1 1.00 -44 -28 -44 28 2 polygon
+1 1.00 -44 0 -64 0 2 polygon
+1.000 0.000 0.000 scb
+(G) {/Helvetica 1.000 cf} 2 7 0 -64 0 pinlabel
+(S) {/Helvetica 1.000 cf} 2 13 0 0 -64 pinlabel
+(D) {/Helvetica 1.000 cf} 2 9 0 0 64 pinlabel
+(spice:M%i %pD %pG %pS GND nmos) {/Times-Roman 1.000 cf} 2 4 0 -244 -139 infolabel
+(sim:n %pG %pD %pS) {/Times-Roman 1.000 cf} 2 4 0 -244 -187 infolabel
+sce
+endgate
+} def
+
+/gnd {
+% -32 -60 64 68 bbox
+begingate
+1 1.00 0 0 0 -32 2 polygon
+1 1.00 -32 -32 32 -32 2 polygon
+1 1.00 -18 -46 18 -46 2 polygon
+1 1.00 -4 -60 4 -60 2 polygon
+1.000 0.000 0.000 scb
+(GND) {/Times-Roman 1.000 cf} 2 1 0 0 0 pinglobal
+sce
+endgate
+} def
+
+/pmos {
+% -64 -64 64 128 bbox
+begingate
+% fundamental
+1 1.00 -44 -28 -44 28 2 polygon
+1 1.00 -60 0 -64 0 2 polygon
+1 1.00 0 -64 0 -28 -32 -28 -32 28 0 28 0 64 6 polygon
+1 1.00 -52 0 8 0.00 360.00 xcarc
+1.000 0.000 0.000 scb
+(S) {/Helvetica 1.000 cf} 2 9 0 0 64 pinlabel
+(D) {/Helvetica 1.000 cf} 2 13 0 0 -64 pinlabel
+(G) {/Helvetica 1.000 cf} 2 7 0 -64 0 pinlabel
+(spice:M%i %pD %pG %pS Vdd pmos) {/Times-Roman 1.000 cf} 2 4 0 -196 -139 infolabel
+(sim:p %pG %pD %pS) {/Times-Roman 1.000 cf} 2 4 0 -196 -187 infolabel
+sce
+endgate
+} def
+
+/vdd {
+% -32 0 64 66 bbox
+begingate
+1 1.00 0 0 0 32 2 polygon
+1 1.00 -32 32 32 32 2 polygon
+(Vdd) {/Times-Roman 0.900 cf} 2 17 0 0 38 label
+1.000 0.000 0.000 scb
+(Vdd) {/Times-Roman 1.000 cf} 2 13 0 0 0 pinglobal
+sce
+endgate
+} def
+
+/dot {
+% -10 -10 20 20 bbox
+begingate
+248 1.00 0 0 6 0.00 360.00 xcarc
+endgate
+} def
+
+/circle {
+% -6 -12 28 24 bbox
+begingate
+1 1.00 16 0 6 0.00 360.00 xcarc
+1 1.00 0 0 10 0 2 polygon
+1.000 0.000 0.000 scb
+(out) {/Times-Roman 1.000 cf} 2 4 0 16 0 pinlabel
+(out) {/Times-Roman 1.000 cf} 2 7 0 0 0 pinlabel
+sce
+endgate
+} def
+
+%%Page: wramp 1
+%%PageOrientation: Portrait
+/pgsave save def bop
+% 454 416 offsets
+1.0000 inchscale
+2.6000 setlinewidth
+
+1.00 0 406 480 nmos
+1.00 -1 502 480 nmos
+1 1.00 406 416 502 416 2 polygon
+1.00 0 454 352 nmos
+1.00 0 454 288 gnd
+1.00 0 406 608 pmos
+1.00 -1 502 608 pmos
+1.00 0 406 672 vdd
+1.00 0 502 672 vdd
+1.00 0 742 608 pmos
+1.00 -1 166 608 pmos
+1 1.00 230 608 342 608 2 polygon
+1 1.00 566 608 678 608 2 polygon
+1 1.00 614 608 614 544 502 544 3 polygon
+1 1.00 406 544 294 544 294 608 3 polygon
+1.00 0 166 672 vdd
+1.00 0 742 672 vdd
+1.00 0 742 192 nmos
+1.00 -1 166 192 nmos
+1 1.00 166 256 166 544 2 polygon
+1 1.00 742 544 742 256 2 polygon
+1 1.00 742 448 806 448 2 polygon
+1.00 0 166 128 gnd
+1.00 0 742 128 gnd
+1 1.00 678 192 230 192 2 polygon
+1 1.00 166 256 294 256 294 192 3 polygon
+1.00 0 294 192 dot
+1.00 0 166 256 dot
+1.00 0 454 416 dot
+1.00 0 294 608 dot
+1.00 0 406 544 dot
+1.00 0 502 544 dot
+1.00 0 614 608 dot
+1.00 0 742 448 dot
+1.00 0 566 480 circle
+1.00 -1 342 480 circle
+1.00 -1 390 352 circle
+1.00 0 806 448 circle
+1.000 0.000 0.000 scb
+(in.p) {/Helvetica 1.000 cf} 2 20 0 582 480 pinlabel
+(in.m) {/Helvetica 1.000 cf} 2 23 0 326 480 pinlabel
+(bias) {/Helvetica 1.000 cf} 2 23 0 374 352 pinlabel
+(out) {/Helvetica 1.000 cf} 2 20 0 822 448 pinlabel
+sce
+pgsave restore showpage
+
+/wramp {
+% -80 -80 160 160 bbox
+begingate
+0 1.00 -80 -80 -80 80 48 24 48 -24 4 polygon
+1 1.00 0 -80 0 -45 2 polygon
+1 1.00 48 0 80 0 2 polygon
+(-) {/Symbol 1.000 cf} 2 5 0 -61 50 label
+(+) {/Symbol 1.000 cf} 2 5 0 -61 -46 label
+1.000 0.000 0.000 scb
+(in.m) {/Times-Roman 1.000 cf} 2 7 0 -80 48 pinlabel
+(in.p) {/Times-Roman 1.000 cf} 2 7 0 -80 -48 pinlabel
+(out) {/Times-Roman 1.000 cf} 2 4 0 80 0 pinlabel
+(bias) {/Times-Roman 1.000 cf} 2 13 0 0 -80 pinlabel
+sce
+endgate
+} def
+
+/capacitor {
+% -32 -64 64 128 bbox
+begingate
+% fundamental
+1 1.00 0 -64 0 -6 2 polygon
+1 1.00 0 64 0 6 2 polygon
+1 1.00 -32 6 32 6 2 polygon
+1 1.00 -32 -6 32 -6 2 polygon
+1.000 0.000 0.000 scb
+(c.1) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel
+(c.2) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel
+(spice:C%i %pc.1 %pc.2 1.0P) {/Times-Roman 1.000 cf} 2 0 0 -208 -160 infolabel
+(sim:c %pc.1 %pc.2) {/Times-Roman 1.000 cf} 2 0 0 -208 -208 infolabel
+sce
+endgate
+} def
+
+%%Page: 2 2
+%%PageOrientation: Portrait
+/pgsave save def bop
+% 294 390 offsets
+1.0000 inchscale
+2.6000 setlinewidth
+
+1.00 0 310 390 wramp
+1 1.00 230 438 198 438 198 518 422 518 422 390 5 polygon
+1 1.00 390 390 454 390 2 polygon
+1.00 0 422 390 dot
+1.00 0 454 390 circle
+1.00 -1 166 342 circle
+1.00 -271 310 310 circle
+1.000 0.000 0.000 scb
+(Bias) {/Helvetica 1.000 cf} 2 29 0 310 294 pinlabel
+sce
+1 1.00 166 342 230 342 2 polygon
+1.000 0.000 0.000 scb
+(Input) {/Helvetica 1.000 cf} 2 23 0 150 342 pinlabel
+(Output) {/Helvetica 1.000 cf} 2 20 0 470 390 pinlabel
+sce
+(Integrator) {/Helvetica 1.000 cf} 2 25 0 294 582 label
+1.00 0 422 326 capacitor
+1.00 0 422 262 gnd
+pgsave restore showpage
+
+%%Trailer
+XCIRCsave restore
+%%EOF
diff --git a/psfiles/powersup.ps b/psfiles/powersup.ps
new file mode 100644
index 0000000..d568156
--- /dev/null
+++ b/psfiles/powersup.ps
@@ -0,0 +1,429 @@
+%!PS-Adobe-3.0
+%%Title: powersup
+%%Creator: Xcircuit v2.3
+%%CreationDate: Wed Jul 18 14:38:19 2001
+%%Pages: 2
+%%BoundingBox: 118 314 494 478
+%%DocumentNeededResources: font Helvetica font Times-Roman font Times-RomanISO
+%%+ font HelveticaISO font Symbol
+%%EndComments
+%%BeginProlog
+%
+% PostScript prolog for output from xcircuit
+% Version: 2.3
+%
+% Electrical circuit (and otherwise general) drawing program
+%
+% Written by Tim Edwards 8/5/93--5/16/01 (tim@bach.ece.jhu.edu)
+% The Johns Hopkins University
+%
+%%BeginResource: procset XCIRCproc 2.3 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 { 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
+ 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
+/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
+/CR { ns 0 /Bline Bline fscale0 neg add def Bline moveto } 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 /rotval exch def /just exch def
+ just 16 and 0 gt {0 1 dtransform gsave pagemat setmatrix idtransform
+ exch grestore 1 0 dtransform gsave pagemat setmatrix idtransform
+ exch grestore dup 0 eq {pop mul 0 gt} {3 1 roll pop pop 0 lt} ifelse
+ {-1 /just just dup 3 and 1 ne {3 xor} if def} {1} ifelse exch 0 lt
+ {-1 /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 0 exch {exch dup type /stringtype eq {true
+ charpath flattenpath} {exec} ifelse } repeat pop pathbbox grestore
+ 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
+ /showflag 1 def rotval rotate Kn currentpoint translate
+ /Bline 0 def /Tabs 0 array def /fscale 1.0 def /kY 0 def
+ {dup type /stringtype eq {show}{exec} ifelse} repeat grestore } def
+/pinlabel { hlevel 0 eq { /pspc 20 def label /pspc 0 def }
+ { pop pop pop pop pop {pop} repeat } ifelse } def
+/pinglobal { pinlabel } def
+/infolabel { pinlabel } def
+
+/scb { setrgbcolor } bind def /sce { defColor aload pop scb } bind def
+/cRedef {/defColor currentcolor 3 array astore def} def
+/begingate { /hlevel hlevel 1 add def /defColor currentcolor sce 3 array
+ astore def gsave sce translate 0 0 moveto dup 0 lt
+ {neg 1 sub -1 1 scale} if rotate dup scale } bind def
+/makeparm {3 string cvs dup length 1 add string /tstr exch def tstr exch
+ 1 exch putinterval tstr 0 (v) putinterval tstr cvn} bind def
+/beginparm { -1 1 {makeparm exch def} for
+ dup type /arraytype eq { aload length -1 1 {makeparm exch def}
+ for } if begingate } bind def
+/endgate { /hlevel hlevel 1 sub def grestore defColor aload pop cRedef
+ scb} bind def
+
+/hlevel 0 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 1 and 0 gt not {closepath} 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
+ style dup 256 ge exch 480 lt and { gsave 1 setgray eofill grestore } if
+ style 16 and 0 gt { gsave style 224 and -5 bitshift dup 7 lt
+ {gar exch get ppaint} { pop eofill } ifelse grestore } if
+ style 8 and 0 gt style 512 eq or { newpath } { stroke } ifelse grestore } 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 0 setlinejoin 6 setmiterlimit 0 0 0 scb cRedef } def
+/insertion {/PSobj save def /showpage {} def bop translate} 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
+
+/Times-Roman findfont dup length dict begin
+{1 index /FID ne {def} {pop pop} ifelse} forall
+/Encoding ISOLatin1Encoding def currentdict end
+/Times-RomanISO exch definefont pop
+
+/Helvetica findfont dup length dict begin
+{1 index /FID ne {def} {pop pop} ifelse} forall
+/Encoding ISOLatin1Encoding def currentdict end
+/HelveticaISO exch definefont pop
+
+% XCircuit output starts here.
+
+/inductor {
+% -14 -64 29 112 bbox
+begingate
+1 1.00 20 -28 20 -44 0 -48 0 -24 spline
+1 1.00 -20 -20 -20 -32 0 -28 0 -24 spline
+1 1.00 20 32 20 16 0 12 0 36 spline
+1 1.00 20 12 20 -4 0 -8 0 16 spline
+1 1.00 20 -8 20 -24 0 -28 0 -4 spline
+1 1.00 -20 20 -20 8 0 12 0 16 spline
+1 1.00 -20 0 -20 -12 0 -8 0 -4 spline
+1 1.00 0 -48 0 -64 2 polygon
+1 1.00 0 36 0 48 2 polygon
+1.000 0.000 0.000 scb
+(l.1) {/Times-Roman cf} 2 9 0 1.00 0 48 pinlabel
+(l.2) {/Times-Roman cf} 2 13 0 1.00 0 -64 pinlabel
+sce
+(spice:L%i %pl.1 %pl.2 1.0U) {/Times-Roman cf} 2 0 0 1.00 -208 -160 infolabel
+sce
+(sim:l %pl.1 %pl.2) {/Times-Roman cf} 2 0 0 1.00 -208 -208 infolabel
+endgate
+} def
+
+/Transformer {
+% -62 -64 108 112 bbox
+(?) 1 beginparm
+1.00 0 -48 0 inductor
+1 1.00 -16 48 -16 -64 2 polygon
+1 1.00 0 48 0 -64 2 polygon
+1.00 180 32 -16 inductor
+1.000 0.000 0.000 scb
+(1) {/Helvetica cf} 2 25 0 1.00 -48 48 pinlabel
+(2) {/Helvetica cf} 2 29 0 1.00 -48 -64 pinlabel
+(3) {/Helvetica cf} 2 25 0 1.00 32 48 pinlabel
+(4) {/Helvetica cf} 2 29 0 1.00 32 -64 pinlabel
+sce
+mark v1 (pcb:T) {/Times-Roman cf} ctmk 20 0 1.00 -96 -160 infolabel
+endgate
+} def
+
+/circle {
+% -6 -12 28 24 bbox
+% trivial
+begingate
+1 1.00 16 0 6 0.00 360.00 xcarc
+1 1.00 0 0 10 0 2 polygon
+1.000 0.000 0.000 scb
+(out) {/Times-Roman cf} 2 4 0 1.00 16 0 pinlabel
+(out) {/Times-Roman cf} 2 7 0 1.00 0 0 pinlabel
+endgate
+} def
+
+/diode {
+% -18 -48 36 96 bbox
+(?) 1 beginparm
+248 1.00 -18 -16 0 16 18 -16 3 polygon
+1 1.00 0 -48 0 -16 2 polygon
+1 1.00 0 48 0 16 2 polygon
+1 1.00 -18 16 18 16 2 polygon
+1.000 0.000 0.000 scb
+(1) {/Times-Roman cf} 2 9 0 1.00 0 48 pinlabel
+(2) {/Times-Roman cf} 2 13 0 1.00 0 -48 pinlabel
+sce
+mark v1 (pcb:D) {/Helvetica cf} ctmk 20 0 1.00 -64 -144 infolabel
+endgate
+} def
+
+/rectifier {
+% -112 -48 192 192 bbox
+begingate
+1.00 315 -64 96 diode
+1.00 225 32 96 diode
+1.00 225 -64 0 diode
+1.00 315 32 0 diode
+1 1.00 -30 130 -16 144 -2 130 3 polygon
+1 1.00 66 62 80 48 66 34 3 polygon
+1 1.00 -2 -34 -16 -48 -30 -34 3 polygon
+1 1.00 -98 34 -112 48 -98 62 3 polygon
+endgate
+} def
+
+/dot {
+% -10 -10 20 20 bbox
+% trivial
+begingate
+248 1.00 0 0 6 0.00 360.00 xcarc
+1.000 0.000 0.000 scb
+(x) {/Times-Roman cf} 2 29 0 1.00 0 0 pinlabel
+endgate
+} def
+
+/jumper {
+% -4 -14 18 28 bbox
+% trivial
+begingate
+1 1.00 0 0 10 -90.00 90.00 xcarc
+1 1.00 0 10 0 16 2 polygon
+1 1.00 0 -10 0 -16 2 polygon
+1.000 0.000 0.000 scb
+(a) {/Times-Roman cf} 2 1 0 1.00 0 16 pinlabel
+(a) {/Times-Roman cf} 2 13 0 1.00 0 -16 pinlabel
+endgate
+} def
+
+/gnd {
+% -32 -60 64 68 bbox
+% trivial
+begingate
+1 1.00 0 0 0 -32 2 polygon
+1 1.00 -32 -32 32 -32 2 polygon
+1 1.00 -18 -46 18 -46 2 polygon
+1 1.00 -4 -60 4 -60 2 polygon
+1.000 0.000 0.000 scb
+(GND) {/Times-Roman cf} 2 1 0 1.00 0 0 pinglobal
+endgate
+} def
+
+/Capacitor {
+% -32 -64 186 128 bbox
+(1.0) (p) (?) 3 beginparm
+1 1.00 0 -64 0 -6 2 polygon
+1 1.00 0 64 0 6 2 polygon
+1 1.00 -32 6 32 6 2 polygon
+1 1.00 -32 -6 32 -6 2 polygon
+1.000 0.000 0.000 scb
+(1) {/Times-Roman cf} 2 9 0 1.00 0 64 pinlabel
+(2) {/Times-Roman cf} 2 13 0 1.00 0 -64 pinlabel
+sce
+mark v2 v1 ( %p1 %p2 ) v3 (spice:C) {/Times-RomanISO cf} ctmk 4 0 1.00 -208
+-160 infolabel
+sce
+(sim:c %p1 %p2) {/Times-Roman cf} 2 4 0 1.00 -208 -208 infolabel
+mark (F) v2 {hS} v1 {/Times-RomanISO cf} ctmk 20 0 1.00 48 0 label
+sce
+mark v3 (pcb:C) {/Times-Roman cf} ctmk 20 0 1.00 -208 -256 infolabel
+endgate
+} def
+
+/Polarized {
+% -32 -64 176 128 bbox
+(1.0) (p) (?) 3 beginparm
+1 1.00 0 -64 0 -6 2 polygon
+1 1.00 0 64 0 6 2 polygon
+1 1.00 -32 6 32 6 2 polygon
+1 1.00 0 -80 74 66.00 114.00 xcarc
+1.000 0.000 0.000 scb
+(1) {/Times-Roman cf} 2 9 0 1.00 0 64 pinlabel
+(2) {/Times-Roman cf} 2 13 0 1.00 0 -64 pinlabel
+sce
+mark v2 v1 ( %p1 %p2 ) v3 (spice:C) {/Times-RomanISO cf} ctmk 4 0 1.00 -208
+-160 infolabel
+sce
+(sim:e %p1 %p2) {/Times-Roman cf} 2 4 0 1.00 -208 -208 infolabel
+mark (F) v2 {hS} v1 {/Times-RomanISO cf} ctmk 20 0 1.00 48 0 label
+sce
+mark v3 (pcb:C) {/Times-Roman cf} ctmk 20 0 1.00 -208 -256 infolabel
+endgate
+} def
+
+%%Page: power_supply 1
+%%PageOrientation: Portrait
+/pgsave save def bop
+% power_supply is_symbol
+% 529 953 offsets
+1.0000 inchscale
+2.6000 setlinewidth
+
+1.00 0 497 1065 Transformer
+1 1.00 449 1113 449 1193 401 1193 3 polygon
+1 1.00 449 1001 449 937 401 937 3 polygon
+1.00 -1 401 1193 circle
+1.00 -1 401 937 circle
+1.000 0.000 0.000 scb
+(+) {/Symbol cf} (V) {/Helvetica cf} 4 23 0 1.00 385 1193 pinlabel
+(-) {/Symbol cf} (V) {/Helvetica cf} 4 23 0 1.00 385 937 pinlabel
+sce
+1.00 0 785 1017 rectifier
+1 1.00 529 1113 529 1193 769 1193 769 1161 4 polygon
+1 1.00 529 1001 529 937 769 937 769 969 4 polygon
+1.00 0 769 969 dot
+1.00 0 769 1161 dot
+1 1.00 673 1065 641 1065 641 953 3 polygon
+1 1.00 641 921 641 873 1201 873 3 polygon
+1 1.00 865 1065 1201 1065 2 polygon
+1 1.00 961 1065 961 1033 2 polygon
+1 1.00 1041 1065 1041 1033 2 polygon
+1 1.00 961 905 961 873 2 polygon
+1 1.00 1041 905 1041 873 2 polygon
+1.00 0 1041 873 dot
+1.00 0 961 873 dot
+1.00 0 961 1065 dot
+1.00 0 1041 1065 dot
+1.00 0 865 1065 dot
+1.00 0 673 1065 dot
+1.00 -1 641 937 jumper
+1.00 0 641 873 gnd
+1.00 0 641 873 dot
+1.00 0 1201 873 circle
+1.00 0 1201 1065 circle
+1.000 0.000 0.000 scb
+(Vout) {0 -80 Kn} {/Helvetica cf} 3 28 0 1.00 1217 1065 pinlabel
+sce
+(+) {/Symbol cf} 2 20 0 1.00 1249 1065 label
+(-) {/Symbol cf} 2 20 0 1.00 1249 873 label
+(Bridge Rectifier) {/Helvetica cf} 2 24 0 1.00 369 1273 label
+1.00 -1 961 969 [(1.0) (\265) ] Capacitor
+1.00 0 1041 969 [(10) (\265) ] Polarized
+(1N914) {hS} (\327) {hS} (4) {/HelveticaISO cf} 6 24 0 1.00 849 1145 label
+pgsave restore showpage
+
+/power_supply {
+% -224 -208 416 416 bbox
+% power_supply is_schematic
+begingate
+0 1.00 -224 -208 -224 208 192 208 192 -208 4 polygon
+(+) {/Symbol cf} (V) {/Helvetica cf} 4 20 0 1.00 -192 112 label
+(-) {/Symbol cf} (V) {/Helvetica cf} 4 20 0 1.00 -192 -112 label
+1.000 0.000 0.000 scb
+(+) {/Symbol cf} (V) {/Helvetica cf} 4 23 0 1.00 -224 112 pinlabel
+(-) {/Symbol cf} (V) {/Helvetica cf} 4 23 0 1.00 -224 -112 pinlabel
+sce
+(power supply) {CR} (unregulated) {/Helvetica cf} 4 21 0 1.00 -16 16 label
+1.000 0.000 0.000 scb
+(Vout) {/Helvetica cf} 2 20 0 1.00 192 112 pinlabel
+sce
+(Vout) {/Helvetica cf} 2 23 0 1.00 160 112 label
+endgate
+} def
+
+/Resistor {
+% -14 -64 157 128 bbox
+(1.0) (k) (?) 3 beginparm
+1 1.00 0 64 0 36 2 polygon
+1 1.00 0 -64 0 -36 2 polygon
+1 1.00 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.00 0 64 pinlabel
+(2) {/Times-Roman cf} 2 13 0 1.00 0 -64 pinlabel
+sce
+mark v2 v1 ( %p1 %p2 ) v3 (spice:R) {/Times-Roman cf} ctmk 4 0 1.00 -208 -160
+infolabel
+sce
+(sim:R %p1 %p2) {/Times-Roman cf} 2 4 0 1.00 -208 -208 infolabel
+mark (W) {/Symbol cf} v2 {hS} v1 {/Times-Roman cf} ctmk 20 0 1.00 32 0 label
+sce
+mark v3 (pcb:R) {/Times-Roman cf} ctmk 20 0 1.00 -208 -256 infolabel
+endgate
+} def
+
+%%Page: 2 2
+%%PageOrientation: Portrait
+/pgsave save def bop
+% 1166 848 offsets
+1.0000 inchscale
+2.6000 setlinewidth
+
+1.00 0 782 1056 power_supply
+1 1.00 558 1168 414 1168 2 polygon
+1 1.00 558 944 414 944 2 polygon
+1.00 0 1166 1040 Resistor
+1 1.00 974 1168 1166 1168 1166 1104 3 polygon
+1.00 0 1166 976 gnd
+(AC input) {/Helvetica cf} 2 21 0 1.00 398 1056 label
+(+) {/Symbol cf} 2 21 0 1.00 398 1136 label
+(-) {/Symbol cf} 2 21 0 1.00 398 976 label
+1.00 -1 414 1168 circle
+1.00 -1 414 944 circle
+pgsave restore showpage
+
+%%Trailer
+XCIRCsave restore
+%%EOF
diff --git a/psfiles/test1.ps b/psfiles/test1.ps
new file mode 100644
index 0000000..5cc16f5
--- /dev/null
+++ b/psfiles/test1.ps
@@ -0,0 +1,154 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Title: test1
+%%Creator: Xcircuit v2.0
+%%CreationDate: Mon May 24 11:14:54 1999
+%%Pages: 1
+%%BoundingBox: 68 68 214 118
+%%DocumentNeededResources: font Times-Italic font Times-Roman
+%%EndComments
+%%BeginProlog
+%
+% PostScript prolog for output from xcircuit
+% Version: 2.0
+%
+% Electrical circuit (and otherwise general) drawing program
+%
+% Written by Tim Edwards 8/5/93--8/8/97 (tim@bach.ece.jhu.edu)
+% The Johns Hopkins University
+%
+%%BeginResource: procset XCIRCproc 2.0 2
+% 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
+/cf { dup type /realtype eq {40 mul /fscale exch def} if dup /xfont exch def
+ findfont fscale scalefont setfont } def
+/Ss { gsave 0.67 dup scale gsave mty neg rmoveto
+ glevel 1 add /glevel exch def } def
+/ss { gsave 0.67 dup scale gsave mty 0.5 mul rmoveto
+ glevel 1 add /glevel exch def } def
+/ns { currentpoint transform % preserve x position!
+ glevel {grestore} repeat /glevel 0 def
+ itransform pop currentpoint pop sub 0 rmoveto } def
+/ul { showflag 1 eq { 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 { showflag 1 eq { 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
+/stW { gsave true charpath flattenpath pathbbox pop exch pop sub
+ grestore } def
+/bs { stW 0 rmoveto } def
+/pspc 0 def
+/qS { (aa) stW (a a) stW sub 4 div 0 rmoveto } def
+/hS { qS qS } def
+/textx { dup 2 mul 1 add copy 0 exch
+ { exch exec exch stringwidth pop add } repeat neg ns } def
+/mty { 0 topmat setmatrix (A) true charpath flattenpath pathbbox exch
+ pop exch sub exch pop neg grestore } def
+/texty { gsave 2 copy pop exec mty } def
+/tcenter { textx grestore 0.5 mul 0 rmoveto } def
+/tright { textx grestore fspc sub 0 rmoveto } def
+/tmiddle { texty 0.5 mul rmoveto } def
+/ttop { texty fspc sub rmoveto } def
+/tshow { { exec show } repeat ns } def
+
+/label { gsave translate 0 0 moveto rotate /just exch def just 16 and 0 gt
+ {0 1 dtransform gsave pagemat setmatrix idtransform exch grestore
+ 1 0 dtransform gsave pagemat setmatrix idtransform exch grestore
+ dup 0 eq {pop mul 0 gt} {3 1 roll pop pop 0 lt} ifelse
+ {-1 /just just dup 3 and 1 ne {3 xor} if def} {1} ifelse exch 0 lt
+ {-1 /just just dup 12 and 4 ne {12 xor} if def} {1} ifelse scale } if
+ /glevel 0 def /showflag 0 def /fspc pspc def
+ just 1 and 0 gt {gsave just 2 and 0 gt {tright}{tcenter} ifelse}
+ {fspc 0 rmoveto} ifelse
+ just 4 and 0 gt {just 8 and 0 gt {ttop}{tmiddle} ifelse}
+ {0 fspc rmoveto} ifelse
+/showflag 1 def tshow grestore } def
+/pinlabel { /pspc 20 def label /pspc 0 def } def
+/pinglobal { pinlabel } def
+
+/begingate { gsave translate 0 0 moveto dup 0 lt {neg 1 sub -1 1 scale} if
+ rotate dup scale /pinlabel { pop pop pop pop 2 mul {pop} repeat}
+ def } bind def
+/beginparm { -1 1 {1 add -1 roll def} for begingate } bind def
+/endgate { grestore /pinlabel { /pspc 20 def
+ label /pspc 0 def } def } bind 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 1 and 0 gt not {closepath} 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
+ style dup 256 ge exch 480 lt and { gsave 1 setgray eofill grestore } if
+ style 16 and 0 gt { gsave style 224 and -5 bitshift dup 7 lt
+ {gar exch get ppaint} { pop eofill } ifelse grestore } if
+ style 8 and 0 gt { newpath } { stroke } ifelse grestore } def
+/scb { gsave setrgbcolor } bind def /sce { grestore } bind 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 0 setlinejoin 6 setmiterlimit 0 setgray } 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
+
+/Symbol-Oblique /Symbol .167 fontslant
+
+% XCircuit output starts here.
+
+%%Page: 1 1
+%%PageOrientation: Portrait
+/pgsave save def bop
+% 448 96 offsets
+1.0000 inchscale
+2.6000 setlinewidth
+
+(\)) {qS} () {/Times-Roman 1.000 cf} (t) {/Times-Italic 1.000 cf} () {ns} (c)
+{ss} () {/Times-Italic 1.000 cf} (pw) {/Symbol-Oblique 1.000 cf} (\) = sin\(2)
+{/Times-Roman 1.000 cf} (x) {/Times-Italic 1.000 cf} (\()
+{/Times-Roman 1.000 cf} () {qS} (f) {/Times-Italic 1.000 cf}
+12 4 0 224 256 label
+0 1.00 192 192 192 304 560 304 560 192 4 polygon
+pgsave restore showpage
+
+%%Trailer
+XCIRCsave restore
+%%EOF
diff --git a/tutorial.html b/tutorial.html
new file mode 100644
index 0000000..421047b
--- /dev/null
+++ b/tutorial.html
@@ -0,0 +1,803 @@
+<HTML>
+<HEAD>
+ <STYLE type="text/css">
+ H1 {color: maroon}
+ H2 {color: #007090}
+ H3 {color: #0050b0}
+ A.head {color: #0060a0}
+ </STYLE>
+</HEAD>
+<TITLE>XCircuit Tutorial Page</TITLE>
+<BODY BACKGROUND=../giffiles/blpaper.gif>
+<CENTER>
+<A HREF=../xctitle.ps><IMG ALIGN=middle SRC=../xctitle.gif
+ALT="The XCircuit Tutorial"></A>
+<H1>The XCircuit Tutorial</H1>
+</CENTER>
+<HR>
+<H2>Table of Contents</H2>
+<UL>
+ <LI> <A HREF="#Download">Download</A> Download the tutorial
+ <LI> <A HREF="#Start">Getting Started</A> Introduction
+ <LI> <A HREF="#Task1">Task 1</A> Running XCircuit
+ <LI> <A HREF="#Task2">Task 2</A> Change an option from the menu
+ <LI> <A HREF="#Task3">Task 3</A> Draw a line
+ <LI> <A HREF="#Task4">Task 4</A> Move an object
+ <LI> <A HREF="#Task5">Task 5</A> Change the properties of a polygon
+ <LI> <A HREF="#Task6">Task 6</A> Change the page
+ <LI> <A HREF="#Task7">Task 7</A> Select an object from the user library
+ <LI> <A HREF="#Task8">Task 8</A> Use a keyboard macro to create an arc
+ <LI> <A HREF="#Task9">Task 9</A> Zooming and panning
+ <LI> <A HREF="#Task10">Task 10</A> Selection of multiple objects
+ <LI> <A HREF="#Task11">Task 11</A> Saving a file
+ <LI> <A HREF="#Task12">Task 12</A> Loading a file
+ <LI> <A HREF="#Task13">Task 13</A> Entering Text
+ <LI> <A HREF="#Task14">Task 14</A> Making curves and paths
+ <LI> <A HREF="#Task15">Task 15</A> Dealing with over/under arrangement of elements
+ <LI> <A HREF="#Task16">Task 16</A> Making user-defined objects
+ <LI> <A HREF="#Task17">Task 17</A> Editing objects and elements
+ <LI> <A HREF="#Task18">Task 18</A> Generating complex geometric shapes
+ <LI> <A HREF="#Task19">Task 19</A> Investigating other <B>xcircuit</B> commands
+ <LI> <A HREF=tutorial2.html>Schematic Capture Tutorial</A>
+ <LI> <A HREF=../features.html><B>xcircuit</B> list of features</A>
+ <LI> <A HREF=../trouble.html>Troubleshooting <B>xcircuit</B></A>
+</UL>
+
+<H2><A NAME="Download">Download</A></H2>
+
+This download is the tar'd image of everything in the tutorial subdirectory,
+including both the standard tutorial and the schematic capture tutorial.
+Note that when untar'd, this will expand into a directory tree with top-level
+directory named "tutorial". <P>
+
+<BLOCKQUOTE>
+ <BLOCKQUOTE>
+ <TABLE border="1" frame="box" rules="none" width="90%" cellspacing="0"
+ cellpadding="5" bgcolor="#ffffcc">
+ <TBODY>
+ <TR>
+ <TD> File </TD> <TD> Revision </TD> <TD> Size </TD> <TD> Date </TD>
+ </TR>
+ <TR>
+ <TD> <A HREF=../tutorial.tar.gz>tutorial.tar.gz</A> </TD>
+ <TD> 1 </TD>
+ <TD> (432KB) </TD>
+ <TD> January 28, 2003 </TD>
+ </TR>
+ </TBODY>
+ </TABLE>
+ </BLOCKQUOTE>
+</BLOCKQUOTE>
+
+<H2><A NAME="Start">Getting started</A></H2>
+Welcome to xcircuit, the circuit drawing program by Tim Edwards. In order to
+get the most out of this page, you should have already downloaded, compiled,
+and installed the xcircuit program and its libraries. <P>
+
+<H3><A NAME="Task1">Task 1: Run the program</A></H3>
+First, start xcircuit without any parameters: <TT>xcircuit</TT> <P>
+
+<IMG SRC=giffiles/tut1.gif><P>
+The features of the xcircuit window are as follows:
+<OL>
+ <LI> Along the top of the screen are buttons for pull-down menus called "File",
+ "Edit", "Text", "Options", and "Window".
+ <LI> At the top, beside the menu buttons, is a welcome message in the message
+ window telling you the version number of the program (Version 2.0).
+ <LI> On the bottom left is a message window telling you that you are currently
+ editing "Page 1".
+ <LI> On the rest of the bottom is a message window telling you that xcircuit
+ has just loaded the library "/usr/local/lib/xcircuit/builtins.lps" (this
+ may be in a different directory if xcircuit has not been installed in the
+ default directories). This message will disappear after about 10 seconds.
+ <LI> At the left and along the bottom are two <B>scrollbars</B> which report the
+ position of the drawing relative to the main window, and can be used
+ to reposition the drawing by clicking on the bar with any mouse button.
+ <I>Note:</I> Due to the length of time necessary to refresh the drawing
+ window, the scrollbars cannot be "dragged".
+ <LI> In the center is a white <B>drawing area</B> with lightly-colored grid and
+ axis lines.
+</OL>
+There are two types of mouse button-pushing used in xcircuit. When a button
+is pushed and released quickly, I will call it <B>"tapping"</B>. When a button
+is pushed and held down, I will call it a <B>"pressing"</B>. Since pressing
+a button is usually performed in order to move objects around on the screen,
+I will sometimes refer to it as <B>"dragging"</B> the object. <P>
+<I>Note:</I> Xcircuit does <B>not</B> use double-clicking.
+
+<H3><A NAME="Task2">Task 2: Change an option from the menu</A></H3>
+Acquaint yourself with the arrangement of menu buttons and pulldown menus.
+<OL>
+ <LI> Press the button labeled "Options" with <B>mouse button 1</B> and hold down
+ the button while you drag the cursor around with the mouse.
+ <LI> Keeping the mouse button pressed down, move down to the "Elements" button.
+ Each button will highlight as you pass through it.
+ <LI> Put the cursor on top of the arrow icon at the right side of the "Elements"
+ button. You should see a secondary menu titled "Elements" pop up. The
+ title is the topmost entry of the menu. It has no function and does not
+ highlight when the cursor is overtop it.
+ <LI> Keep moving down to the "Color" button and again move the cursor over
+ the arrow icon. The third and final menu of colors will pop up. Note
+ that one item, "Inherit Color" has a check mark on it. The check mark
+ denotes that this entry is the <I>current default color</I>.
+ <LI> Move down to the purple color button and release the mouse button there.
+ The menus will disappear. You have just changed the default drawing
+ color to purple.
+ <LI> Repeat the procedure up to step 4. When you enter the "color" menu you
+ will see that the purple color button is now checked, showing that
+ purple is the default drawing color.
+</OL>
+Throughout the tutorial I will refer to the menu items using the pulldown
+hierarchy, with an arrow ("->") wherever you need to go to a submenu. So
+the "Inherit Color" menu item would be referred to as
+"Options->Elements->Color->Inherit Color".
+
+<H3><A NAME="Task3">Task 3: Draw a line</A></H3>
+Now that you understand the function of the menu buttons, it's time to learn
+how to draw something. The simplest and most common thing to draw in xcircuit
+is a polygon.
+<OL>
+ <LI> Tap <B>mouse button 1</B> anywhere in the drawing area and release it
+ immediately. If you wait too long to release the button, xcircuit will
+ interpret it as trying to "grab" an element on the screen, and nothing
+ will happen (because there aren't any elements yet to grab).
+ <LI> Move the cursor around the screen. A purple line (because you chose
+ purple to be the default color in Task 2) will appear between the
+ origin point and will track with the cursor.
+ <LI> Tap <B>mouse button 1</B> again to finish a line segment. A new line
+ will begin at the point the first one left off. Do this several times
+ to form a polygon. Finish the polygon by tapping <B>mouse button 2</B>.
+ <LI> Repeat steps 1 through 3 but finish by tapping <B>mouse button 3</B>.
+ The line you have just created will disappear. You have just
+ <B>cancelled</B> the operation.
+</OL>
+
+<IMG SRC=giffiles/poly1.gif ALIGN=CENTER> A purple polygon <P>
+
+For most operations in xcircuit, tapping <B>mouse button 1</B> will begin or
+continue an operation, tapping <B>mouse button 2</B> will finish it, and
+tapping <B>mouse button 3</B> will cancel it. The behavior can be slightly
+different depending on the circumstance, and the behavior for <B>pressing</B>
+buttons 1 and 2 is very different, as demonstrated in Tasks 4 and 5.
+
+<H3><A NAME="Task4">Task 4: Move an object</A></H3>
+<B>mouse button 1</B> does have one very different function than that described
+in the last task. It can be used to "grab" hold of an object for moving.
+<OL>
+ <LI> Press <B>mouse button 1</B> close to a line of the polygon you just
+ drew. Hold down the button. The line should turn gold colored,
+ indicating that it has been "selected". If instead nothing happens,
+ then the cursor is too far away from the line. Releasing the button
+ releases the object.
+ <LI> Try grabbing and releasing the polygon from different distances to get
+ a feel for how close you must be to the object in order to grab it.
+ <LI> Now grab the polygon, and with the mouse button held down, move the
+ cursor across the screen. The polygon will follow the cursor. This
+ is how you move an object in xcircuit.
+</OL>
+
+<H3><A NAME="Task5">Task 5: Change the properties of a polygon</A></H3>
+<B>mouse button 2</B> also has a selection funtion; in fact, it has two of
+them. In the normal drawing mode, it can be used to select objects for editing
+or changing properties. In this task you will use <B>mouse button 2</B> to
+select the polygon you just created in order to make it a dashed line.
+<OL>
+ <LI> Select the object by tapping <B>mouse button 2</B> with the cursor near
+ to the object. The object will turn gold, indicating that it has been
+ selected.
+ <LI> Tap <B>mouse button 3</B>, and the selection will be canceled.
+ <LI> Investigate the other form of selection by pressing <B>mouse button 2</B>
+ starting below and to the left of the polygon, and dragging the cursor
+ to the top and right of the polygon. A green box will follow the
+ movement of the cursor.
+ <LI> When the box completely surrounds <I>at least one</I> of the endpoints
+ of any line segment of the polygon, release the button. The polygon
+ should be selected.
+ <LI> Click <B>mouse button 3</B> to deselect the object.
+ <LI> Repeat steps 3 through 5, noting that if no endpoint of the polygon
+ is contained within the <B>select box</B>, then the polygon will not
+ be selected.
+ <LI> Select the polygon but do not deselect it.
+ <LI> Go to the "Options->Elements->Border" submenu and select option
+ "Dashed". When you release the button, the polygon will be drawn
+ in dashed lines, and it will no longer be selected.
+ <LI> Experiment with the different Colors, Fill-styles, and Border-styles
+ available in the menus. Some of the many varieties are shown below.
+</OL>
+
+<IMG SRC=giffiles/poly2.gif ALIGN=TOP> More purple polygons. <BR> Top left: original.
+ Top right: dashed. <BR> Center left: closed. Center right: stippled
+ (50% stipple). <BR> Bottom left: opaque stippled. Bottom right:
+ filled solid. <P>
+
+<H3><A NAME="Task6">Task 6: Change the page</A></H3>
+Xcircuit has multiple pages. There are two ways to change the current
+drawing page, from a keyboard macro convenience function, or from the
+menu.
+<OL>
+ <LI> Select the menu item "Window->Goto Page->Page 2". The polygon
+ you just drew on Page 1 will disappear, and you will be on a
+ clean page, with the bottom left-hand window saying that you
+ are editing "Page 2".
+ <LI> Go back to Page 1 using the keyboard macro: With the cursor
+ in the drawing area, press the "1" key. You will be back on
+ page one.
+ <LI> Keys "1" through "9" and "0" will get you instantly to pages
+ 1 through 10, respectively.
+ <LI> End this task on Page 2, which is currently empty.
+</OL>
+
+<H3><A NAME="Task7">Task 7: Select an object from the user library</A></H3>
+Another common task in xcircuit is to grab an object from the object
+library and place it on the drawing.
+<OL>
+ <LI> Select the "Window->Show Library" button from the menu, or press the
+ "l" (that's "ell" as in "library") key in the drawing window. Note
+ that the menu button has
+ "(l)" written after "Show Library", indicating that the <B>keyboard
+ macro</B> "l" has the same function as the menu button. Generally,
+ keyboard macros, once memorized, are more convenient to use than
+ their menu button counterparts. Almost always, the letter or symbol
+ used for the macro is meaningful and easy to remember (like "a" for
+ "arc", "s" for "spline", "p" for "pan", "c" for "copy", etc.).
+ <LI> A page will appear, showing a number of circuit objects in the
+ built-in object library.
+ <LI> Grab one object by moving the cursor over top it and pressing and
+ holding <B>mouse button 1</B>. As soon as the button is pressed,
+ the object library will disappear, and you will be dragging the
+ object around Page 2, from which you called up the library. When
+ you release the button, the object will be deselected. Place it
+ away from the polygon you drew in the previous tasks.
+ <LI> Select the object by tapping on it with <B>mouse button 2</B>.
+ Try changing the border style to dashed. You will see that
+ nothing happens. This is because object instances from the
+ library are <I>made up of</I> basic elements like polygons,
+ arcs, and splines, but they are <B>composite</B> objects which
+ do not have properties like "Fill-style" and "Border-style".
+ However, object instances do have the property of color, and
+ also the property "size" which simple elements like the polygon
+ do not have.
+ <LI> Select the object again (if you have not already done so), and
+ then select the menu item "Options->Elements->Object Size".
+ <LI> A window will pop up asking you for an object size. Place the
+ cursor somewhere inside the popup window and change the default
+ size of "1.00" to "1.5".
+ <LI> Press the "Okay" button. The popup window will disappear and
+ the object will now be 1.5 times its original size (that is
+ to say, its length and width will each be 1.5 times their
+ previous value).
+</OL>
+
+<CENTER>
+<IMG SRC=giffiles/lib1.gif> <BR>Part of the default circuits built-in library. <P>
+</CENTER>
+
+<H3><A NAME="Task8">Task 8: Use a keyboard macro to create an arc</A></H3>
+As mentioned above, keyboard macros are generally easier to use than
+their menu-button counterparts. You will create an arc in both fashions
+to show the difference.
+<OL>
+ <LI> Select the menu item "Edit->Make Arc".
+ <LI> The information window at the bottom will say "Click button 1
+ and drag to create arc".
+ <LI> Place the cursor where you want the arc center to be and press it.
+ While holding it down, drag the cursor around the screen. An arc
+ will follow the cursor.
+ <LI> Release the mouse button. You will now be editing the angle of the
+ first endpoint. If you just want a circle, tap <B>mouse button 2</B>
+ to end. If you keep pressing <B>mouse button 1</B>, you will be
+ able to edit, in turn, all the properties of the arc such as
+ endpoint positions and ellipse axis.
+ <LI> Now, create an arc by tapping the "a" key while the cursor is in the
+ drawing area. The main difference is that <B>mouse button 1</B> is
+ not held down while you form the radius of the arc. Otherwise,
+ the arc can be edited as before.
+</OL>
+
+<IMG SRC=giffiles/arcs1.gif ALIGN=TOP> Some differenct arcs.
+ <BR> Top left: linewidth of 1.5, first endpoint at 90 degrees.
+ Top right: closed arc.
+ <BR> Bottom left: red circle.
+ Bottom right: blue ellipse. <P>
+
+<H3><A NAME="Task9">Task 9: Zooming and panning</A></H3>
+<OL>
+ <LI> Pan the screen to be centered on the arc by placing the cursor close to
+ the center of the arc and tapping the "p" key.
+ <LI> Pan the screen by selecting menu item "Window->Center Pan" and then
+ tapping <B>mouse button 1</B> on the point of the drawing area that
+ you want to be the new center of the screen.
+ <LI> Tap the "Z" and "z" keys to zoom in and out, or select the menu items
+ "Window->Zoom In" and "Window->Zoom Out". Note how the scrollbars
+ on the side and bottom of the screen change with the scale of the
+ drawing.
+ <LI> Pan the screen by tapping any mouse button on either of the scrollbars.
+ Note how this function is similar to the "Pan" function.
+ <LI> Zoom to a selected area of the screen by making a green selection box
+ like you did in Task 5, step 3. However, instead of releasing the
+ button in order to make the selection, type the "Z" key while the
+ mouse button is still pressed down. The screen area will zoom to
+ the area of the green box.
+ <LI> Alternately, choose "Window->Zoom Box" from the menu. Then press
+ any mouse button and drag to generate the green selection box. When
+ the button is released, the screen area will zoom to the area of the
+ green box.
+</OL>
+
+<H3><A NAME="Task10">Task 10: Selection of multiple objects</A></H3>
+<OL>
+ <LI> Clear the current page by choosing the menu item "File->Clear Page".
+ There is no keyboard macro for this command, to prevent accidental
+ erasure of the screen (which cannot be undeleted).
+ <LI> Grab several objects from the library (see Task 7) and place them
+ on top of each other in the middle of the page.
+ <LI> Decide on one object which you will move, leaving the others where
+ they are.
+ <LI> Now press <B>mouse button 1</B> as if you were going to select the
+ object you want to move. Because the command is ambiguous---the
+ program doesn't know which one or ones of the objects you really
+ want to select---the program will query you one by one for which
+ objects you want to select.
+ <LI> One object will turn blue, the cursor will become a question mark,
+ and the information bar at the bottom will read, for example,
+ "Click to accetp/reject: 1 of 3" if the program found three
+ objects under the cursor. Release the mouse button at this
+ point.
+ <LI> If the object that you want to select and move is colored blue,
+ click <B>mouse button 2</B>. If an object that you <I>don't</I>
+ want to select and move is colored blue, click <B>mouse button
+ 3</B>.
+ <LI> When you have chosen or rejected each of the objects, the cursor
+ will become a circle. You may now press and hold <B>mouse button
+ 1</B> and continue with the intended move.
+ <LI> Try this several times to get used to it.
+</OL>
+
+<CENTER>
+<IMG SRC=giffiles/select1.gif> <BR> Three objects simultaneously selected. <BR> </CENTER>
+ The gold-colored gate has already been selected; the program is now prompting
+ the user for confirmation to add the blue-colored object to the selection. <P>
+<CENTER>
+<IMG SRC=giffiles/select2.gif> <BR> Message window when selecting multiple objects.
+</CENTER><P>
+
+<H3><A NAME="Task11">Task 11: Saving a file</A></H3>
+Since the main purpose of xcircuit is to create publishable-quality picutures,
+it is necessary to understand a little bit about the PostScript output which
+it writes. First I will show you how to save and load a file.
+
+<OL>
+ <LI> Choose a page which you have been drawing on, or create a drawing to
+ save.
+ <LI> Select the menu item "File->Write Xcircuit PS". You will get a popup
+ window that looks like the figure below. <BR>
+ <IMG SRC=giffiles/save1.gif ALIGN=CENTER><BR>The file properties popup window.
+ <LI> If you tap the button labeled "Write". You will get a message in the
+ bottom message window saying "Warning: Enter a new name". Nothing
+ has been written at this point.
+ <LI> Change the filename. Move the cursor over the window containing the
+ filename. Delete the current file name and type in a new one.
+ When you are done, either hit the <TT>RETURN</TT> key or tap the
+ button labeled "Okay" (both actions have the same effect).
+ <LI> <I>Important note:</I> If the name has <B>no</B> extension, an
+ extension "<TT>.ps</TT>" will automatically be added when the file
+ is written. If an extension, for instance "<TT>.eps</TT>", is written
+ in the filename, then it will be used.
+ <LI> When you change the filename, the page label will be changed to
+ match the filename, and the bottom left-hand message window will
+ now say "Editing: " followed by the page label name, followed by
+ the page number in parentheses. <BR>
+ <IMG SRC=giffiles/save2.gif ALIGN=CENTER><BR>Changes to scale and filename.
+ <LI> If the filename you chose already exists on the disk, the button
+ which previously was labeled "Write File" will now say "Overwrite
+ File", the computer will beep, and the bottom message window will
+ say "Warning: File exists".
+ <LI> Tap the button labeled "Close". The window disappears; because
+ you did not tap the "Write File" button, nothing was written,
+ although the filename change has been registered.
+ <LI> Select "File->Write Xcircuit PS" again to bring the window back.
+ This time, tap the "Write File" button. The file will be written
+ to the disk current directory, and the button which previously
+ said "Close" will now say "Done".
+ <LI> The file which has just been saved is already in a PostScript format.
+ You may view it with any PostScript previewer (ghostview is recommended).
+</OL>
+
+<H3><A NAME="Task12">Task 12: Loading a file</A></H3>
+
+<OL>
+ <LI> Go to a new, unused page.
+ <LI> Select menu item "File->Read Xcircuit PS". You will get a screen that
+ looks something like the following: <BR>
+ <IMG SRC=giffiles/load1.gif ALIGN=CENTER> The load-file popup window.
+ <LI> If the file list is larger than the window, you may scroll up and down
+ the list by clicking <B>mouse button 1</B> or <B>2</B> on the
+ <B>scrollbar</B> at the right side of the window and dragging it up
+ and down.
+ <LI> A green box will be drawn around each filename as your cursor passes
+ over it.
+ <LI> Find the file that you just saved in the last task. When the green
+ box is over this filename, tap <B>mouse button 1</B>. The filename
+ will turn green, and at the same time will be copied into the
+ text edit box.
+ <LI> Tap the "Okay" button to load the file.
+ <LI> If you do not wish to use the scrolling menu, you may type the filename,
+ with or without the "<TT>.ps</TT>" extension, in the text edit box,
+ followed by the <TT>RETURN</TT> key or tapping the "Okay" button.
+ <LI> Selecting a directory name in the file list box, including "../" for
+ the directory one level up, will go to that directory. Entering a
+ directory name in the text edit box followed by the <TT>RETURN</TT>
+ key will also go to that directory.
+ <LI> If you know where the <B>xcircuit</B> source is kept, then select the
+ "File->Read Xcircuit PS", go to the source directory, go to the
+ "examples" directory, and load one of the example files, such as
+ "<TT>vcoblock.ps</TT>".
+</OL>
+
+<H3><A NAME="Task13">Task 13: Entering Text</A></H3>
+Xcircuit has a very complicated interface for entering text, which allows
+you to change fonts and font styles within a string, make overlines and
+underlines, and subscripts and superscripts. <P>
+
+<OL>
+ <LI> Go to a new, unused page.
+ <LI> Let's say you want to type in a fairly complicated expression, like <BR>
+ "f(x) = sin(2*pi*omega_c*t)" (except with Greek letters, of course).
+ <LI> If you've read your TeX manual thoroughly, and understand all the finer
+ points of mathematical equation typesetting (if you haven't, you should),
+ then you know that all the variables should be in italic type.
+ <LI> Select menu item "Text->Style->Italic". The default text font is now
+ italic style.
+ <LI> Select menu item "Text->Font->Times Roman" if it is not checked already.
+ The default text font is now Times Italic (Times font + Italic style).
+ <LI> Select menu item "Text->Make Label" and click on <B>mouse button 1</B>
+ anywhere in the drawing area.
+ <LI> Alternately, you can just tap the "<TT>t</TT>" key in the drawing area.
+ <LI> The green line marks the pointer position, and the "x" marks the
+ origin (justification) of the text.
+ <LI> Select menu item "Text->Justification->Middle Justified". You will
+ see the green "x" move to the center of the line, showing that the
+ text is vertically centered on its point of origin.
+ <LI> Alternately, you could type keypad key "6" (on some systems,
+ Shift-keypad 6) to get center-left justified text.
+ <LI> Type "<TT>f</TT>". In the bottom message window, the letter "f" and a vertical
+ bar "|" appear, showing what's in the string relative to the text
+ cursor.
+ <LI> Select menu item "Text->Insert->1/4 Space". This is the proper thing to
+ do for "italic correction", an extra bit of space necessary after an
+ italic character followed by an upright character, particularly tall
+ ones such as "f" and "t" which lean leans rather far to the right of
+ their character bounding boxes.
+ <LI> Select menu item "Text->Style->Normal".
+ <LI> Type "<TT>(</TT>"
+ <LI> Select menu item "Text->Style->Italic".
+ <LI> Type "<TT>x</TT>"
+ <LI> Select menu item "Text->Style->Normal".
+ <LI> Type "<TT>) = sin(2</TT>"
+ <LI> Select menu item "Text->Style->Italic".
+ <LI> Select menu item "Text->Font->Symbol".
+ <LI> Type "\". A page with the 256 character encodings for the
+ Symbol font will appear, replacing the current page, as
+ shown in the figure below.<BR>
+ <CENTER><IMG SRC=giffiles/symbol_enc.gif></CENTER>
+ <LI> Click on the "pi" symbol. The screen will immediately
+ return to the original page, with the "pi" added to the
+ text line.
+ <LI> Type "\", then click on the "omega" symbol in the encoding
+ vector.
+ <LI> Select menu item "Text->Font->Times-Roman"
+ <LI> Select menu item "Text->Style->Subscript" (or keypad-minus)
+ <LI> Type "<TT>c</TT>"
+ <LI> Select menu item "Text->Style->Normalscript" (or keypad-enter)
+ <LI> Type "<TT>t</TT>"
+ <LI> Select menu item "Text->Insert->1/4 Space" for another italic
+ correction.
+ <LI> Select menu item "Text->Style->Normal".
+ <LI> Type "<TT>)</TT>"
+ <LI> Before typing <TT>&lt;RETURN&gt;</TT> to complete the text, use
+ the left- and right-arrow keys to move the cursor around inside
+ the text string. Note how font- and style- changing commands
+ embedded in the text string can be seen in the message window.
+ Their position relative to the text cursor is important when
+ anticipating the effect of deleting (<TT>&lt;DELETE&gt;</TT> key)
+ a text command.
+ <LI> Yes, this is very complicated, but it is also very powerful.
+</OL>
+
+<CENTER><IMG SRC=giffiles/text.gif></CENTER><BR>
+Above: The text figure created in the task.<BR>
+Below: The <A HREF=psfiles/test1.ps>PostScript output</A> of the same text from xcircuit.
+<CENTER><IMG SRC=giffiles/text2.gif></CENTER><BR><BR>
+
+<I>Typographical Note:</I> ISO-Latin1 encodings define the Greek character "mu"
+() to be used for the symbol "micro", which naturally is used often in
+circuit schematics. This differs from the Symbol font "mu" in that it matches
+the style and properties of the font in which it is defined. Thus, it is
+possible to get a Helvetica "mu", a Times-BoldItalic "mu", etc., something
+which is virtually impossible to do even in LaTeX<A HREF=footnote.html>(*)</A>.
+Due to the font size and style matching, this is always preferable to the
+Symbol font "mu". To get the ISO-Latin1 "mu" character, (while entering or
+editing text) choose <I>Text->Encoding->ISO-Latin1</I> from the menu, then
+either choose <I>Text->Insert->Character</I> or type "\" at the text cursor,
+then select the "mu" character from the character array.
+
+<H3><A NAME="Task14">Task 14: Making curves and paths</A></H3>
+Curve drawing is a useful feature of most capable drawing programs. The
+concept of <I>paths</I> is a powerful aspect of PostScript which is not
+usually found elsewhere. Path definitions are used to create a single
+entity out of a string of curves, arc segments, and lines. The resulting
+entity has its own color, fill styles, and border styles.
+
+<OL>
+ <LI> Go to a new, unused page.
+ <LI> Type "s" to start a curve (you can think of "s" as standing for
+ "spline", although these are Bezier curves, not splines, or you
+ can just think of the curvy "s" shape. The key "c" is reserved
+ for copying). The first thing you will see is two dotted lines
+ ending in little "x" marks. These are the curve control points.
+ <LI> Move the cursor around. Right now you are positioning the
+ end of the curve but have no control over the control points.<BR>
+ <IMG SRC=giffiles/spline1.gif>
+ <LI> Place the curve endpoint. If you are satisfied with the shape
+ of this curve, you can tap <B>mouse button 2</B> to finish
+ the curve and quit. However, we'll say that you have more to
+ do to this curve, so tap <B>mouse button 1</B> instead.
+ <LI> You get a message saying "Adjust control point", and the cursor
+ moves overtop the nearest "x" mark. Now when you move the
+ cursor, you change the shape of the curve.
+ <LI> Move the control point two grid blocks to the left of where it
+ started (make the control line horizontal with a length of
+ 4 grid blocks). <BR>
+ <IMG SRC=giffiles/spline2.gif>
+ <LI> Click <B>mouse button 2</B> to finish the curve.
+ <LI> Now we will make a simple path. But it takes more than one element
+ to form a path. Put the cursor over the curve and tap the "c"
+ key.
+ <LI> When you move the cursor, a copy of the curve will follow you.
+ <LI> While you are dragging the curve copy, flip it by tapping the
+ "f" key and then the "F" key (one horizontal plus one vertical
+ flip).
+ <LI> Place the curve with its endpoints overtop the original curve.
+ The result should look like the figure below.
+ <LI> Select both curves by tapping <B>mouse button 2</B> on top of
+ each one, or by forming a selection box (see Task 5).
+ <LI> Tap the "j" key in order to "join" the two curves into a single
+ path.
+ <LI> If you now move or select the path, you will find that both
+ curves act as a single entity.
+ <LI> Select the path and then select menu item
+ "Options->Elements->Fill->(black box)". The path will then
+ become solid black. If you color it blue, it will look something
+ like the right side of the figure below.
+</OL>
+
+<CENTER><IMG SRC=giffiles/spline3.gif></CENTER><BR>
+Curves and paths. Left: The curve has been copied and flipped.
+Center: The two curves are placed together and joined into a path.
+Right: The path is filled and colored as a single entity.
+
+<H3><A NAME="Task15">Task 15: Dealing with over/under arrangement of elements</A></H3>
+
+<OL>
+ <LI> Clear the current page (menu option "File->Clear Page") or go
+ to a new, unused page.
+ <LI> Start a <B>box</B> with the "b" key (this is a convenience for
+ drawing rectangles and squares).
+ <LI> Click <B>mouse button 2</B> to finish the box.
+ <LI> Select the box and choose menu item
+ "Options->Elements->Fill->(black box)", where the "black box"
+ is the first menu item in the list. You will now have a black
+ box. (note that to select the box, the cursor must be near the
+ <B>edge</B> of the box, not in the middle).
+ <LI> Select the box again and choose menu item
+ "Options->Elements->Color->(orange box)". You will now have
+ a solid, orange box.
+ <LI> Go to the built-in library ("l" key) and bring back a circuit
+ object (say, a "nand" gate).
+ <LI> Place the gate on top of the orange box.
+ <LI> Make a copy the box ("c" key) and place it beside the first.
+ <B>mouse button 2</B> ends the copy command.
+ <LI> You will notice that the library object suddenly disappeared.
+ This is because the "copy" command moved the orange box
+ to the end of the drawing list. Because it is drawn <B>after</B>
+ the library object, the library object is hidden underneath.
+ <LI> To get the library object on top again, select everything in the
+ area of the orange box by forming a selection box around the
+ orange box (<B>mouse button 2</B>). Tap the "X" key (Shift-X)
+ to <B>exchange</B> the drawing order of the two elements. The
+ library object will now be visible on top of the orange box.
+</OL>
+
+<CENTER><IMG SRC=giffiles/overunder.gif><BR>
+Over- and Under- arrangements of elements. </CENTER>
+
+<H3><A NAME="Task16">Task 16: Making user-defined objects</A></H3>
+One of the most powerful aspects of xcircuit is its ability to deal with
+objects on a hierarchical level. Circuits in particular are highly
+structured. Often it is desirable to draw a subcircuit and use it
+several times. It is much more efficient to draw the subcircuit and
+create a <B>user object</B> from it rather than to copy all the
+separate elements of the subcircuit every time you want a copy.
+This is also true of new circuit components. <P>
+
+Say we wish to create a new circuit component, a <B>dependent current
+source</B>.
+
+<OL>
+ <LI> Clear the current page or go to a new page.
+ <LI> We want the dependent current source to look something like the
+ independent current source (isource) in the builtin library file.
+ Go to the library and bring back an "isource" object for reference.
+ <LI> Draw a polygon, as in Task 3. Make it diamond-shaped and three
+ grid spaces high, two wide (see the figure below).
+ <LI> Add a line of height one-half-grid space on the top and bottom
+ of the diamond.
+ <LI> Now we will do something unusual. We will grab the arrow from
+ inside the isource object. Edit the original "isource" object
+ by placing the cursor over it and typing the "&gt;" key (push
+ object). The page you were on will disappear, and you will
+ see only the object "isource".
+ <LI> Using the multiple-selection mechanism described in Task 10,
+ select the arrowhead and line in the middle of "isource", but
+ not the surrounding object.
+ <LI> Make a copy of these two elements with the "c" key.
+ <LI> While still dragging around the copy of the arrow, return to
+ the main page by typing the "&lt;" key (pop object). You will
+ be returned to the original drawing, still dragging the arrow
+ with you.
+ <LI> Place the arrow inside the diamond.
+ <LI> Using a selection box, select all of the components of the
+ "dependent current source" object you have just constructed.
+ <LI> Type the "m" key to make the object out of the selected
+ components.
+ <LI> You will get a popup box asking for a name for the object.
+ Type something obvious like "depsource" or "disource".
+ Spaces are not allowed (if you use them, they will be
+ converted to underscores).
+ <LI> Tap the "Okay" button. Now, if you click on the dependent
+ source, it will be treated just like one of the builtin
+ objects.
+ <LI> Type the "L" key to go to the <B>User Library</B>. You
+ will see that the new object you created is now located
+ there. You can click on it to bring back another copy,
+ just like the builtin objects.
+</OL>
+
+<CENTER><IMG SRC=giffiles/object.gif><BR>
+Steps in creating a new user-defined object. </CENTER>
+
+<H3><A NAME="Task17">Task 17: Editing objects and elements </A></H3>
+You briefly edited the built-in "isource" object in the last task,
+but did not change anything. In this task, suppose we want to change
+the appearance of the "dependent current source" object we made in
+the previous task.
+
+<OL>
+ <LI> To edit the object, "push" into it using the "&gt;" key,
+ as you did for the "isource" in the last task.
+ <LI> Make the polygon shorter. Put the cursor close to the
+ top of the diamond and type "e" for "edit".
+ <LI> Use the multiple-selection mechanism to select only the
+ diamond.
+ <LI> Now you will be editing the point position. Move the
+ point down one-half grid space, and tap <B>mouse
+ button 2</B> to complete the edit.
+ <LI> Do the same for the bottom point. Where the two ends of
+ the polygon meet, you will need to adjust both of the
+ points.
+ <LI> Extend the lines on the top and bottom to meet the
+ diamond by editing the endpoints just like you did for
+ the diamond.
+ <LI> When you are done, return to the main page by "popping"
+ out of the object page, using the "&lt;" key.
+</OL>
+
+<CENTER><IMG SRC=giffiles/objedit.gif><BR>
+Steps in editing the user-defined object. </CENTER>
+
+<H3><A NAME="Task18">Task 18: Generating complex geometric shapes</A></H3>
+This can be an incredibly useful feature for general drawing. A
+wholesale use of it is necessary to create such extravaganzas as
+this rendition of the
+<A HREF=http://bach.ece.jhu.edu/~tim/pictures/apl_logo3.ps>JHU Applied
+Physics Lab's logo</A>. I have made use of something in PostScript
+known as a ``path,'' that is, a linked set of lines, arcs, and splines
+which together form the boundary of a single object which can be
+bordered, filled, colored, etc. In this task, I will show you how
+to generate a picture of a solid cylinder, by making a path consisting
+of both ellipses and lines.
+
+<OL>
+ <LI> Start with a clean page.
+ <LI> Create an ellipse as follows:
+ <OL>
+ <LI> Type macro <B>a</B> to start an arc.
+ <LI> Drag the arc out to some desired size.
+ <LI> Click the first mouse button three times (to bypass endpoint
+ editing and go to ellipse axis editing). The position of
+ the cursor will move from the side of the circle to the top.
+ <LI> Drag the ellipse minor axis to the desired size and click
+ the second mouse button to end.
+ </OL> </LI>
+
+ <CENTER><IMG SRC=giffiles/path1.gif><BR>
+ Creating a path object (solid cylinder): top ellipse. </CENTER>
+
+ <LI> The whole ellipse becomes the top of the "cylinder". To make the
+ bottom of the cylinder:
+ <OL>
+ <LI> Copy the first arc and place it well below the first.
+ <LI> Type macro <B>e</B> to edit (or select edit from the menu
+ and click on the lower ellipse).
+ <LI> Immediately type <B>e</B> again or click on the first mouse
+ button to go to endpoint editing mode.
+ <LI> Drag the endpoint around to the other side until the
+ result is the bottom half of an ellipse. Click the
+ second mouse button to finish.
+ </OL> </LI>
+
+ <CENTER><IMG SRC=giffiles/path2.gif><BR>
+ Creating a path object (solid cylinder): bottom (half) ellipse. </CENTER>
+
+ <LI> Draw two lines to create the sides of the cylinder.
+ <LI> Select the bottom and sides of the cylinder, and type the <B>j</B> key
+ to "join" these segments into a single "path".
+ <LI> Select everything. If you (individually) select any component of the
+ path (either the side lines or the bottom ellipse), the whole path
+ will be highlighted.
+
+ <LI> Copy (with the <B>c</B> macro) and place the copy to the side. </LI>
+
+ <CENTER><IMG SRC=giffiles/path3.gif><BR>
+ Creating a path object (solid cylinder): Two cylinder frames. </CENTER>
+
+ <LI> Select the path (lower part) of the rightmost cylinder.
+ <LI> Choose menu item "Options->Elements->Fill->(black box)". Now
+ you can see how to create arbitrary filled shapes. </LI>
+
+ <CENTER><IMG SRC=giffiles/path4.gif><BR>
+ Creating a path object (solid cylinder): Two cylinders, the right one
+ consisting of a filled path. </CENTER>
+
+ <LI> Finish the cylinder in the following manner:
+ <OL>
+ <LI> Color the path shape dark gray.
+ <LI> Select the ellipse located above the colored cylinder and
+ perform the same steps to make it filled solid and colored
+ light gray.
+ <LI> Use the <B>X</B> keyboard macro to correctly arrange the
+ elements, with the light gray ellipse on top of the dark
+ gray path object.
+ <LI> Place the black wire frame cylinder on the left on top of
+ the solid cylinder on the right. <I>Hint:</I> Move the
+ wire frame halfway on top of the solid cylinder, then
+ arrange the top-to-bottom order of the elements so
+ that the wire frame ends up on top, then move the
+ wire frame the rest of the way.
+ </OL>
+</OL>
+
+<CENTER><IMG SRC=giffiles/path5.gif><BR>
+Creating a path object (solid cylinder): Finished cylinder. </CENTER>
+
+
+<H3><A NAME="Task19">Task 19: Investigating other <B>xcircuit</B> commands</A></H3>
+By now you should understand the basic user interface of xcircuit and be able
+to get around the menus, the drawing area, be able to handle the popup
+prompting windows, load and save files, write text, and create polygons,
+arcs, curves, paths, and user objects. Of course, we have just touched
+the surface of <B>xcircuit</B> capabilities. The list of features below
+will help you find out all the things that can be done with the program. <P>
+
+For help with remembering keyboard macros and their functions, select the
+menu item "Options->Help!". You will get a popup window to the right of
+the screen which lists all of the available keyboard functions. Tap the
+"Done" bottom at the bottom when you no longer need the help menu. <P>
+
+<HR>
+<P><A HREF=../welcome.html><IMG ALIGN=middle SRC=../giffiles/bluebutton.gif
+ BORDER=0></A> Back to the xcircuit home page. . .
+<P><IMG SRC=../giffiles/line1.gif><P>
+email: <I>tim@bach.ece.jhu.edu</I>
+</BODY>
+</HTML>
diff --git a/tutorial2.html b/tutorial2.html
new file mode 100644
index 0000000..b2322d7
--- /dev/null
+++ b/tutorial2.html
@@ -0,0 +1,1455 @@
+<HTML>
+<HEAD>
+ <STYLE type="text/css">
+ H1 {color: maroon}
+ H2 {color: #007090}
+ H3 {color: #0050b0}
+ A.head {color: #0060a0}
+ </STYLE>
+</HEAD>
+<TITLE>XCircuit Schematic Capture Tutorial Page</TITLE>
+<BODY BACKGROUND=../giffiles/blpaper.gif>
+<H1><IMG ALIGN=top SRC=../xcicon.gif> The XCircuit Schematic Capture Tutorial</H1>
+
+<!--
+<HR>
+<font color=red>
+<IMG SRC=../giffiles/constr.gif ALIGN=middle>
+NOTICE: Page still under construction (but almost finished)!
+</font>
+-->
+
+<HR>
+
+<H2>Table of Contents</H2>
+<UL>
+ <LI> <A HREF="#Start">Getting Started</A>
+ <LI> <A HREF="#Task1">Task1</A> Acquaint yourself with XCircuit
+ <LI> <A HREF="#Task2">Task2</A> Run the program
+ <LI> <A HREF="#Task3">Task3</A> Drawing a circuit for SPICE simulation
+ <LI> <A HREF="#Task4">Task4</A> Introduction to parameters
+ <LI> <A HREF="#Task5">Task5</A> Drawing a circuit with parameters
+ <LI> <A HREF="#Task6">Task6</A> Making a new "fundamental" object
+ <LI> <A HREF="#Task7">Task7</A> A schematic with symbol-less schematics
+ in the hierarchy
+ <LI> <A HREF="#Task8">Task8</A> Identifying electrical connections
+ <LI> <A HREF="#Task9">Task9</A> A symbol on its own schematic
+ <LI> <A HREF="#Task10">Task10</A> "sim" format and flattened
+ <LI> <A HREF="#Task11">Task11</A> "pcb" type netlists
+ <LI> <A HREF="#Task12">Task12</A> Multiple-gate chips in PCB netlists
+ <LI> <A HREF="#Task13">Task13</A> Modifying netlist formats
+ <LI> <A HREF="#Task14">Task14</A> Example: A bridge rectifier for a PCB
+</UL>
+
+
+<H2><A NAME="Start">Getting started</A></H2>
+This tutorial is provided to help users get up and running with the
+schematic capture capabilities of xcircuit.
+In order to get the most out of this page, you should have already
+downloaded, compiled, and installed the xcircuit program and its libraries,
+and xcircuit should be compiled with schematic capture capability (on by
+default; see the Imakefile for details). <P>
+
+<BLOCKQUOTE>
+<font color=red> IMPORTANT NOTICE: </font>
+<font color=green>
+It is necessary for you to have the new (version 2.3.3) distribution of xcircuit
+compiled <I>and installed</I> to get the correct behavior in the tutorial.
+In particular, the PostScript prolog has changed and if the old one is
+prepended to the new xcircuit files, the files will not be printable or
+viewable from a PostScript previewer. <P>
+
+There are additional differences between versions 2.1(beta) to version 2.3.3,
+mainly in the way symbols and schematics are associated with each other.
+The new methods are incorporated into this tutorial. Version 2.3.3 also
+corrects some errors in netlist generation, and is generally more stable.
+Versions before 2.3.3 will <I>not</I> produce <B>pcb</B>-style netlists
+as featured in this tutorial.<P>
+</font>
+</BLOCKQUOTE>
+
+<H2><A NAME="Task1">Task 1: Acquaint yourself with XCircuit</A></H2>
+If you are not yet familiar with the basic features of xcircuit, I recommend
+you to peruse the basic <A HREF=tutorial.html>XCircuit tutorial</A> for
+essential features of the program which will not be reiterated here.
+
+<H2><A NAME="Task2">Task 2: Run the program</A></H2>
+XCircuit now starts in schematic capture mode unless explicitly compiled
+without the feature. So just start xcircuit as you normally would:
+<BLOCKQUOTE>
+ <B>xcircuit</B>
+</BLOCKQUOTE>
+
+Xcircuit in schematic capture mode will start with a window which
+has a menu button for ``Netlist'' and two
+buttons at the bottom left-hand corner, one of which is blank and the other
+which is colored red and labeled ``Schematic.''
+The bottom buttons can be interpreted to mean that the current page is a
+schematic drawing, and this schematic has no corresponding symbol (more
+about this later). <P>
+
+There is a menu button, "Options->Disable (Enable) XSchema", which toggles
+the visibility of the ``Netlist'' menu button and the two status buttons at the
+bottom. In case you're working on a drawing which has nothing to do with
+schematic capture, you might prefer to have the option disabled. This
+does not affect the program in any way other than to make the buttons
+disappear so that xcircuit looks like the original version without the
+schematic capture features. <P>
+
+<H2><A NAME="Task3">Task 3: Drawing a circuit for SPICE simulation</A></H2>
+This task outlines some of the features of xcircuit used to make a simple
+circuit. In this and the following tasks, you will create an analog
+circuit, an operational amplifier, and make it into a symbol to be used
+as a subcircuit of a more general circuit (an integrator). First you will
+draw a circuit using simple (default) devices, and later I will show how to
+pass parameters to devices, such as width and length of individual MOSFETs.
+
+<OL>
+ <LI> Drag the elements which you need from the built-in library to
+ (a clean) Page 1. Namely, the nMOS, pMOS, Vdd, and GND symbols. <P>
+ <LI> Duplicate elements (copy (<B>c</B>), flip (<B>f</B>)) as necessary
+ and connect with lines to produce the following transconductance
+ amplifier schematic: <BR><BR>
+
+ <CENTER><IMG SRC=giffiles/amp1.gif><BR>
+ A transconductance amplifier, schematic drawing. </CENTER> <BR>
+
+ <LI> Either drag the "dot" object from the library page or use the
+ period key ("<B>.</B>") to place connections between the wires
+ at junctions. This is not strictly necessary, as xcircuit will
+ deduce connectivity from the T-connections of wires, not from
+ the "dot" symbols; it is merely a matter of preference depending
+ on the style with which you like to draw circuits. In the case
+ of wires crossing at a junction, the dot <I>is</I> necessary
+ since crossing wires generally do not indicate a connection in
+ schematic diagrams. You may also use a "jumper" object to
+ indicate that two crossing wires do not connect although this,
+ like the use of dots at T-junctions, is a matter of style and
+ personal preference. <P>
+
+ <LI> Add "circle" connections at the inputs and outputs. Once again,
+ this is a matter of style; the actual inputs and outputs from
+ the netlist's point of view will be indicated by pin labels
+ (see next step). The resulting diagram looks like the following:
+ <BR><BR>
+
+ <CENTER><IMG SRC=giffiles/amp2.gif><BR>
+ Same transconductance amplifier, a little fancier style. </CENTER> <BR>
+
+ <LI> Because the amplifier will be a SPICE subcircuit, it is necessary
+ to tell the netlist generator where the input and output ports
+ are. For this, you need <I>pin labels</I>. Pin labels differ
+ from ordinary labels in several ways: By default, they are
+ colored red (though this can be changed), and are placed with a
+ slight offset from their marked positions, so the position
+ marker can be used as a tag to indicate what wire the label is
+ attached to. Additionally, the marked position is visible on
+ the drawing, since its exact location with respect to wires is
+ critical to the resultant netlist. Finally, pin labels only
+ appear on the top level of the hierarchy. <P>
+
+ To generate the pin label, type key macro (capital) <B>T</B>, or
+ choose menu item "Netlist->Make Pin". Set justification as
+ desired and place the "x" marking the pin position over the
+ "o" of the circle objects, or on top of a wire. The pins in
+ this amplifier will be labeled "in.m", "in.p", "out", and "bias".
+ <BR><BR>
+
+
+ <CENTER><IMG SRC=giffiles/amp3.gif><BR>
+ Transconductance amplifier with I/O pins marked. </CENTER> <BR>
+
+ <LI> Now it's time to turn this schematic into a symbol, that is,
+ to make a symbol which will be used on the top-level drawing
+ to designate the transconductance amplifier. What we really
+ want to do is to use the symbol "wramp" (stands for "wide
+ range (transconductance) amplifier", which is what this is),
+ from library "avlsi.lps" (part of the distribution), as the
+ symbol for the schematic you just drew. Go to the built-in
+ library, then edit the "wramp" symbol from there by placing
+ the cursor over the "wramp" symbol and typing key macro
+ "<B>&gt;</B>". The result looks like this: <BR><BR>
+
+ <CENTER><IMG SRC=giffiles/wramp1.gif><BR>
+ Transconductance amplifier symbol from the "avlsi.lps" library.
+ </CENTER><BR>
+
+ Note that in this picture, the bottom left-hand corner of
+ the screen says "Symbol" in the button that was, on Page 1, blank,
+ and the button that used to say "Schematic" is now blank. This
+ means that this object is a symbol, not a schematic, and it currently
+ does not have a schematic attached to it. <P>
+
+ Also note that the pin labels marking input/output positions for
+ <font color=red>in.m</font>,
+ <font color=red>in.p</font>,
+ <font color=red>out</font>, and
+ <font color=red>bias</font>
+ are invisible on the library page, but become visible when
+ editing the object, that is, when the library object has been placed
+ on the top-level page. When the library object is used in a circuit,
+ the pin labels are again invisible. This way, the drawing doesn't
+ get cluttered up with nested labels. <P>
+
+ <LI> The procedure to attach the schematic to this symbol is quite
+ simple. Choose menu item <I>Netlist->Associate With Schematic</I>.
+ Immediately, you will be taken to the page directory, with the
+ message "Click on schematic page to associate." With the first
+ mouse button, click on Page 1 (assuming that's the amplifier
+ schematic). Instead of the usual behavior on the page directory
+ (go immediately to the page under the cursor), you will be
+ returned back to the amplifier symbol edit page.
+
+ Now both buttons appear at the same time, one named "Symbol" and
+ one named "Schematic". The one named "Schematic" is colored white,
+ indicated that the current page is the symbol, and that a
+ schematic exists which is the circuit represented by this symbol.
+ Press either button, and you will go to the schematic drawing
+ (back to Page 1). Press either button again, and you will return
+ to the symbol. The library object "wramp" is now a symbol for
+ the schematic of Page 1. <P>
+
+ A symbol can be <I>disassociated</I> from its schematic, and
+ vice versa, by choosing menu item
+ <I>"Netlist->Disassociate Symbol"</I> or
+ <I>"Netlist->Disassociate Schematic"</I>.
+ This menu option will appear only for the appropriate case.
+ Choose this action from the menu now. Note that the white button
+ in the lower left-hand corner goes back to being blank. The
+ library object "wramp" is no longer a symbol for the schematic
+ of Page 1. <P>
+
+ Association can be initiated both ways. The alternate method is
+ as follows: Go back to Page 1 (the amplifier schematic).
+ Choose menu item <I>"Netlist->Associate with Symbol"</I> (note
+ that this is the same button that used to be "Disassociate").
+ You are transported to the library directory, with the instructions
+ in the message window to "click on the library page, then the
+ object to associate". <P>
+
+ Click on the first library page (the one containing the wide-range
+ amplifier symbol "wramp"). Now click on the symbol "wramp".
+ Now, you will be returned to the original schematic page, and
+ once again, the buttons in the window's lower-left-hand corner
+ are red and white, indicating that you are on the schematic page
+ (red) but can move to the symbol page (white). Alternately to
+ clicking buttons to move between pages, you can choose menu
+ item <I>"Netlist->Go To Symbol"</I> (or "Go To Schematic",
+ as appropriate), or use the "<TT>/</TT>" key macro. Note that
+ the key macro only works if an association exists (i.e., it will
+ never create a new schematic or symbol, as described in the next
+ paragraph, although this was formerly the behavior in xcircuit
+ version 2.1(beta)). <P>
+
+ The schematic and symbol both do not need to exist before association.
+ You can associate an existing schematic to a non-existing symbol
+ or associate an existing symbol to a non-existing schematic by using
+ the <I>"Netlist->Make Matching Symbol"</I> or
+ <I>"Netlist->Make Matching Schematic"</I> selection, respectively.
+ If you are editing a symbol, then you will be transported to the first
+ blank top-level page. If you are editing a schematic (top-level
+ page), a new User Library symbol will be generated and you will
+ be transported there. In either case, the new object will take
+ the name of its associated object, and all pin labels from the
+ original will be copied to the new, so that's one less step you
+ have to do yourself.
+
+ <LI> Now it's time to use the symbol as a subcircuit in a top-level
+ circuit schematic. Go to Page 2, which will be the top-level
+ circuit. Draw an integrator as shown below: <BR><BR>
+
+ <CENTER><IMG SRC=giffiles/integrate1.gif><BR>
+ Simple continuous-time integrator using a transconductance
+ amplifier. </CENTER> <BR>
+
+ Note that there is a "regular" text label titling the page;
+ this is made in the usual fashion, using key macro (lowercase)
+ "<B>t</B>", and therefore is not a pin label. <P>
+
+ There is a one-to-one correspondence between the
+ pin labels on the schematic and the pin labels on the
+ corresponding symbol. This is important to make sure that
+ the wires attaching to the symbol on the top-level schematic
+ go to the correct destinations in the amplifier's schematic.
+ It is not an error to have unassigned pins: A pin inside
+ the schematic may be labeling a net for reference purposes
+ only. A pin on the symbol which is not used in the
+ schematic is much less likely, but may, for instance, be
+ representing an unconnected pin on an IC. <P>
+
+ <LI> Save this page. Call it "integrator". At this point, several
+ points should be noted:
+ <UL>
+ <LI> Two pages were saved instead of one. XCircuit followed
+ the path of the symbol to its schematic, and saved the
+ schematic for the amplifier. This becomes a separate
+ page in the PostScript output. Running "ghostview" or
+ your favorite PostScript previewer shows the two-page
+ output.
+ <LI> Page 1, the page containing the schematic of the amplifier,
+ regardless of what you called it in the first place (if
+ anything), was renamed "wramp".
+ By convention, the schematic and symbol have the same
+ name, although this does not have to be the case.
+ <LI> All the pages got saved as "Full Page" and not as
+ "Encapsulated". For multi-page files, "Encapsulated"
+ PostScript is not meaningful. Options for positioning
+ the schematic on the page will probably appear in the
+ future.
+ </UL> <P>
+
+ <LI> Go to the top-level schematic page (Page 2, or "integrator").
+ From the menu, select "Netlist->Write Spice". The message
+ label will read "spice netlist saved as integrator.spc".
+ You can view the file <A HREF=netfiles/integrator.spc>integrator.spc</A>
+ here. Note in particular that xcircuit has generated a
+ hierarchical netlist, using the amplifier "wramp" as a
+ subcircuit. The subcircuit contains parameters which are
+ its pin labels; the <I>call</I> to the subcircuit has parameters
+ which are the pin labels given on the top level page. <P>
+</OL>
+
+For reference, the resulting PostScript file can be found here:
+<A HREF=psfiles/integrator.ps>integrator.ps</A><P>
+
+SPICE simulation: Xcircuit provides only the netlist. It can also
+provide voltage sources and so forth, which will be described in the
+next task. However, it has no concept of "models" and provides no
+commands for running analyses. In the example above, the spice file
+will need to be edited to insert models for devices "nmos" and "pmos",
+Declare a voltage source and value for Vdd, and add commands
+for DC operating point determination and transient analysis. <P>
+
+<H2><A NAME="Task4">Task 4: Introduction to parameters</A></H2>
+
+One thing you may have noticed about the previous circuit is that you
+did not, in fact <I>could not</I> specify a value for the capacitor,
+which defaulted in the spice netlist to 1.0pF. And there was no way
+to specify a width and length of each nMOS and pMOS device. You might
+have guessed: There does exist a way to pass values such as capacitance
+to the capacitor object, and width and length to the MOS device objects. <P>
+
+Here's a brief description of how parameters work:<BR>
+Each object contains a list of its parameters, NULL if there are no
+parameters. Each item in this list declares what is the <I>type</I> of
+parameter (so far, "string" or "integer", with only string types fully
+supported at present), a default value for the parameter, and another
+list which points to all the locations where the parameter gets
+substituted. <P>
+
+It is important to keep in mind the distinction between an <I>object</I>
+and its <I>instantiations</I>. If you are on Page 1 looking at an object
+you just dragged back from the library, you are looking at a single
+<I>instance</I> of that object. If you use the <B>&gt;</B> key to
+edit the object, then you are editing the object itself. Normally,
+there is no particular need to make the distinction. However, when
+using parameters, the object itself will declare the default parameter,
+but each instance of the object may contain its own unique value for
+that parameter. <P>
+
+Xcircuit adopts a method for editing parameters in which either the
+default value or the instance value may be altered, and which one is
+altered depends on <I>what top-level page you came from</I>. The
+most obvious way to implement this is that if you edit an object from
+one of the library pages, you are assumed to be altering the default
+(the object on the library page always displays the default value of
+all its parameters). If, instead, you edit the object by getting
+there from a top-level page or another object, you are editing the
+<I>instance</I>, and changes you make to the parameters will only
+affect the value of that instance only. This should be made clear
+by the tutorial below.
+
+<OL>
+ <LI> Run xcircuit, which should automatically load "analoglib2.lps"
+ onto library page 2 (since xcircuit version 2.2.0. Otherwise,
+ load it from the subdirectory "examples" of the source
+ distribution).
+ <LI> Go to library page 2 (macro <B>L</B>, click on second page).
+ You will see a set of
+ replacement objects for the basic circuit structures "capacitor",
+ "resistor", "nmos", etc. The main difference between these and
+ the original objects is that they contain labels indicating
+ values. <BR><BR>
+ <CENTER><IMG SRC=giffiles/alib.gif><BR>
+ The parameterized analog component library. </CENTER> <BR>
+
+ <LI> Select, say, the "Resistor" object and drag it back to Page 1.
+ <LI> Copy the resistor so you have two resistors on Page 1.
+ <LI> Edit one of the resistors (<B>&gt;</B> key). You will note that,
+ in addition to pin labels, there are some other strings (called
+ "info labels") which will be described in detail later.
+ <LI> Edit the string which reads "1.0 k(Ohm)" (<B>e</B> key macro, or
+ menu selection <I>Edit->Edit</I>). As you move the
+ cursor around the string, look at the message window. You will
+ note that in addition to the usual ASCII characters and string
+ commands such as font changes, half-space, etc., there is now
+ an additional embedded command label "Parameter(<I>n</I>)&lt;
+ <I>text</I>&gt;", where <I>n</I> is the parameter number, and
+ <I>text</I> is a substring (may be empty) which is the parameter
+ text. For the resistor, "1.0" is a parameter
+ describing the value, and "k" is a parameter for the metric
+ scale prefix. Unlike all other parts of the string, you cannot
+ delete the parameter delimiter marks (parameters must be
+ removed from a string with the "Unparameterize" function).
+ <LI> Replace the substring "1.0" with "20" and replace "k" by "M"
+ or whatever your favorite resistor value is. Be sure that you
+ are inside the parameter delimiters when you make the change,
+ or you will get unexpected results.
+ <LI> Pop back up to the originating page (<B>&lt;</B> key). You will
+ see that only the resistor which you edited has its values
+ changed; the other one still has the original (default) values
+ of "1.0" and "k".
+ <LI> Go to the library again (<B>L</B> key, then click on the second
+ page), and from there, edit the
+ resistor (<B>&gt;</B> key). From here, change the value to, say,
+ "2.0 k". Note that now you are changing the <I>default</I> value,
+ not an instance value.
+ <LI> Return to the library page (<B>&lt;</B> key). Now the library
+ object shows the new resistance value, indicating that the
+ default value was altered. From here, go back to the
+ originating page (third mouse button). Now you see that the
+ resistor you altered retained its unique value, but the
+ resistor you didn't alter changed with the default. <BR>
+ The rule here is that each instance of an object accepts the
+ default unless is specifically declares its own unique value.
+</OL>
+
+<BLOCKQUOTE>
+<font color=red> How does this work?</font><BR>
+<font color=green>
+There are already traces of parameterization at work in xcircuit.
+Each instance of an object has its own unique value for position,
+rotation, color, and scale. These can be thought of as parameters.
+Whenever xcircuit draws an object instance, it uses the unique
+position, rotation, and scale to alter the 2-D transformation
+matrix, then recursively calls the object drawing routine on the
+object itself. When parameters are present, xcircuit first looks
+up any unique values which the object instance might declare, and
+substitutes these values into the object itself. If the instance
+does not declare a particular parameter, then xcircuit substitutes
+the default value. Then xcircuit recursively calls the drawing
+routine on the object.
+</font>
+</BLOCKQUOTE>
+
+<H2><A NAME="Task5">Task 5: Drawing a circuit with parameters</A></H2>
+
+<OL>
+ <LI> Run xcircuit, as in the last example.
+
+ <LI> Using the parameterized devices from the <TT>analoglib2</TT>
+ library, create the simple lowpass R-C filter shown below:<BR><BR>
+
+ <CENTER><IMG SRC=giffiles/filter1.gif><BR>
+ Simple R-C filter. </CENTER> <BR>
+
+ <LI> Now, using what you learned from Task 4, alter the individual
+ parameter values so that they look like the following:<BR><BR>
+
+ <CENTER><IMG SRC=giffiles/filter2.gif><BR>
+ Simple R-C filter, with new parameter values. </CENTER> <BR>
+
+ <LI> Choose menu item "File->Write XCircuit PS", and rename the top
+ page something obvious like "filter". Save it if you like.
+
+ <LI> Choose menu item "Netlist->Write Spice".
+ You can view the resulting SPICE file
+ <A HREF=netfiles/filter.spc>filter.spc</A> here.
+</OL> <P>
+
+For reference, the finished PostScript file can be found here:
+<A HREF=psfiles/filter.ps>filter.ps</A><P>
+
+Although there are no MOS devices in this file, as in the previous task,
+the SPICE deck will need to be completed with commands for performing
+transient analysis and so forth, unless the file is to be used for
+netlist comparison purposes only. <P>
+
+Spice output is determined solely by the ``info labels'' (which are green
+by default, and only show up when the object they are in is on the top-level
+page), in particular, those that begin with the token ``spice:''. There
+are several ``escape sequences'' which have special meaning in this info
+label. They begin with the ``%'' character and are summarized below.
+Also, string parameters can be inserted directly into the info label, a
+process which is described directly after.
+
+<H3>Info label escape sequences:</H3>
+<BLOCKQUOTE>
+<DL>
+ <DT> <TT>%%</TT>
+ <DD> Inserts the character `%' into the netlist output line.
+ <DT> <TT>?</TT>
+ <DD> When a single question mark is parameterized as its
+ own parameter, it is interpreted in the following way: If the
+ parser encounters a non-default value (i.e., a number), it uses
+ that number as the index. Otherwise, it generates a unique sequence
+ number for the object instance. This method is preferred over the
+ "%i" escape, as it allows each part number to be individually
+ assigned, if desired.
+ <DT> <I>(parameter)</I>
+ <DD> Any parameter may be inserted into the info
+ label, and therefore takes the value of either the instance string,
+ if defined, or else takes the value of the default string. The
+ question mark (<TT>?</TT>) is a special case (see above).
+ <DT> <TT>%n</TT>
+ <DD> Insert the name of the object.
+ <DT> <TT>%p"name"</TT>
+ <DD> Insert the name of a pin. The pin name must
+ be quoted exactly as is the label which defines the pin. The quotes
+ may be omitted if the name contains no white space and is followed
+ by white space (if in doubt, just use the quotes).
+ <DT> <TT>%r</TT>
+ <DD> Insert a carriage-return into the netlist output line.
+ Carriage-returns can also be inserted directly into the output
+ by using Alt-Enter or menu option
+ <I>"Text->Insert->Carriage Return"</I>.
+ <DT> <TT>%t</TT>
+ <DD> Insert a tab into the netlist output line.
+</DL>
+</BLOCKQUOTE>
+
+Obsoleted sequences (maintained for backward compatibility):
+<BLOCKQUOTE>
+<DL>
+ <DT> <TT>%i</TT>
+ <DD> Insert a number, in sequence, incrementing each time
+ a new object instance is visited during netlist compilation.
+ <DT> <TT>%v"name"</TT>
+ <DD> Insert the name of a parameter. The parameter
+ name must be quoted exactly as the label or label segement which
+ defines the <I>default</I> parameter. Alternately, a parameter
+ can be inserted directly into the string during text edit mode
+ using the "Alt-p" key. This is perhaps more intuitive, because the
+ value shown is either the default or substituted value, as appropriate,
+ rather than always listing the default value. The library file
+ <A HREF=../xcircuit/psfiles/analoglib1.lps>analoglib1.lps</A>,
+ which is available either
+ at this link or in the source distribution under the "examples"
+ directory, makes use of the "%v" method. <TT>analoglib2.lps</TT>
+ makes use of the direct-insertion method.
+</DL>
+</BLOCKQUOTE>
+
+<font color=red> <I>Example:</I> </font>
+<font color=green>
+<BLOCKQUOTE><PRE><TT>
+sim:n %pG %pS %pD
+</TT></PRE></BLOCKQUOTE>
+</font>
+<font color=red>
+<I>or:</I>
+</font>
+<font color=green>
+<BLOCKQUOTE><PRE><TT>
+spice:M%i %pD %pG %pS GND nmos
+</TT></PRE></BLOCKQUOTE>
+</font>
+The top example produces an nMOS transistor line in a "sim" netlist, where
+the actual net names inserted into the output file are those which correspond
+to the gate, source, and drain pins, respectively. The bottom example does
+the same thing for a SPICE netlist file, assuming that the SPICE model will
+be called "nmos" (this can be parameterized if more than one model is
+required; see paragraph below), and the "%i" sequence ensures that each
+transistor gets a different label: M1, M2, M3, and so forth.
+
+<H3>Inserting string parameters directly into a label:</H3>
+
+While editing a label, use the key sequence ``Alt-p'' to insert a parameter.
+If the object has only one parameter, it will be inserted automatically. If
+the object has two or more parameters, xcircuit will prompt for the one to
+use (listed by number). Once the copy of the parameter string is in the
+label, there is effectively no difference between the copies: making changes
+to one automatically changes the other (although the change may not show up
+immediately). In general, this method is clearer than using ``%v'', since
+the subsituted string appears directly in the info label rather than
+referring back to the default string, so ``what you see is what you get.''<P>
+
+<OL>
+ <LI> From the default analog library (library page 1), grab the
+ (unparameterized) object "nmos" and drag
+ it back to page 1 (or whatever page you're working on).
+ <LI> Edit the "nmos" object (key "<B>&gt;</B>").
+ <LI> Use the second mouse button to draw a selection box around the
+ word ``nmos'' in the first information (green) label.
+ <LI> The word ``nmos'' will be highlighted; in this selection
+ mechanism, only that substring of the label has been selected.
+ <LI> Choose menu option <I>Text->Parameterize</I>.
+ <LI> Now edit the info label. When you get to the word ``nmos'',
+ you will notice, as printed in the message field at the bottom
+ of the xcircuit window, that it is bounded by invisible marker
+ characters ``Parameter(1)&lt;'' and ``&gt;''.
+ At this point, the SPICE model is a parameter of the object,
+ and its default value is ``nmos''.
+ <LI> Because you entered the object from Page 1 rather than the Library,
+ what you are editing is the string <I>instance</I>, not the
+ string <I>default</I>. Change the parameter substring to read
+ <B>nmos1</B>, indicating an alternate MOS model called ``nmos1''
+ (which must be added to the output SPICE file before simulation!).
+ Make <I>sure</I> that the character "1" comes <I>before</I> the
+ "&gt;" parameter end marker; otherwise, it is not part of the
+ parameter, and instead becomes part of the default value.
+ <LI> Finish editing and return to the calling page (key "<B>&lt;</B>").
+ <LI> Grab another object ``nmos'' from the library and place it on
+ Page 1. Edit it (key "<B>&gt;</B>"). Note that the parameter
+ string contains the default value ``nmos''.
+ <LI> Pop back out to Page 1 and run ``Netlist->Write spice''. The
+ resulting file is simple and can be included below. <BR><BR>
+
+<font color=green>
+<TT>
+Spice circuit Page 1<BR><BR>
+M1 net.1 net.2 net.3 GND nmos<BR>
+M2 net.4 net.5 net.6 GND nmos1<BR>
+.end
+</TT>
+</font>
+
+</OL>
+
+Information labels with embedded parameters are used in the library file
+<A HREF=../xcircuit/psfiles/analoglib2.lps>analoglib2.lps</A>.
+Note that in most objects
+("Capacitor", "Resistor"), the parameterized value is in a string and
+therefore shows up as part of the circuit diagram. However, others
+("PNP", "NPN", where the SPICE model name is parameterized) have the
+parameter only in an information label, where it does not show up on
+the top-level page. Yet others ("nMOS", "pMOS") contain both (width
+and length values appear on the top-level page and are copied into
+the information label, but the name of the SPICE model only appears
+in the information label). <P>
+
+As an addendum to this task, run xcircuit and load the file and generate
+a spice circuit which uses two nMOS devices from the "analoglib2"
+library page, each instance having a different SPICE model. In
+addition, make the widths of the two devices different.
+
+Note that when more than one string contain the same parameter, editing
+one of the values will not be immediately reflected on the screen as
+a change in the other(s). Popping back to the level above the object
+and returning to edit the object will show all the proper substitutions.
+
+<H2><A NAME="Task6">Task 6: Making a new "fundamental" object</A></H2>
+
+All netlists generate output when they reach a ``fundamental'' object,
+which is defined as an object containing one or more informational
+labels. <P>
+
+Fundamental objects require several features:
+<UL>
+ <LI> Fundamental objects are expected to be symbols. As in all
+ symbols, lines are interpreted as part of the symbol drawing,
+ not as nets. The only ``electrically relevant'' elements on
+ a symbol are the pins.
+ <LI> Fundamental objects contain ``info labels'' which tell the
+ netlist compiler what to do with the information passed to
+ the object via the pins. Presently, there are three
+ different "styles" of netlist, named after the primary
+ format which uses that kind of netlist:
+ <UL>
+ <LI> Hierarchical, or ``spice'' netlists
+ <LI> Flattened, or ``sim'' netlists
+ <LI> Network, or ``pcb'' netlists
+ </UL>
+ Information on each of these netlists is widely available
+ and distributed with layout and simulation software
+ packages. In a nutshell, however:
+ <UL>
+ <LI> Hierarchical and Flattened netlists both list by
+ <B>element</B>, with each line of the file consisting
+ of an element name followed by a list of network names
+ corresponding to each of the element's pins.
+ <font color=red>
+ <BR><I>example:</I>
+ </font>
+ <font color=green>
+ <TT>Q1 net2 D0 gnd npn1</TT><BR>
+ </font>
+ indicates that NPN transistor ``Q1'' has a collector
+ connection to "net2", base connection to "D0", and
+ an emitter connection to "gnd" (presumably a global
+ network).
+ <LI> A Network netlist lists by <B>network</B>, with each
+ line consisting of a network name followed by a list
+ of pins in the circuit to which the network connects.
+ The element names are part of the pin names, with
+ the circuit hierarchy encoded in the element name by
+ slashes (`/'), much like a file system directory listing.
+ <font color=red>
+ <BR><I>example:</I>
+ </font>
+ <font color=green>
+ <TT> Net3 control/74LS00_1#1-2 display/LED#2-5</TT><BR>
+ </font>
+ indicates that the network named "Net3" connects
+ pin number 2 in the first 74LS00 chip in subcircuit
+ "control" to pin number 5 of the second LED in subcircuit
+ "display".
+ </UL>
+ <LI> A result of being an object and having an info-label is that the
+ "Symbol" button is green, indicating a "fundamental" element.
+</UL>
+
+There is another type of symbol called a "trivial" symbol. This cannot be
+designated from xcircuit. It is only a optimization which tells xcircuit
+that an object does not produce output and is not a sub-schematic, and
+therefore can be ignored except for the presence of pins. This prevents
+the xcircuit netlist generator from wasting time looking for subschematics
+or informational labels. Except for saving compute cycles, there is no
+other difference between "trivial" and normal symbols. "Trivial" symbols
+are declared in the PostScript file with a "% trivial" line.
+
+<H2><A NAME="Task7">
+Task 7: A schematic with symbol-less schematics in the hierarchy</A></H2>
+
+A "subschematic" is a special kind of symbol which, unlike other symbols,
+contains electrically relevant objects. Really, it's just a grouping of
+electrical objects which bypasses the trouble of making a symbol to
+represent the grouping. This can be useful, for instance, in drawing
+one-half of a differential amplifier and repeating the schematic, flipped
+horizontally. <P>
+
+XCircuit is extremely sophisticated in its ability to deal with subschematics.
+It will determine how the subschematic is used, searching for input and
+output "ports" that link the subschematic to the circuit on the level above. <P>
+
+The file in the xcircuit source "examples" directory
+<TT>diffamp_test.ps</TT> is an example of such a file with subschematics.
+It represents an obvious situation in which a subschematic is useful: This is
+a differential amplifier, so a large portion of the amplifer is duplicated on
+the positive and negative sides. <P>
+
+<CENTER><IMG SRC=giffiles/halfamp.gif><BR><BR>
+Differential amplifier sub-schematic: One half of an amplifier.
+</CENTER> <BR><BR>
+
+<CENTER><IMG SRC=giffiles/fullamp_anno.gif><BR><BR>
+Differential amplifier complete schematic
+</CENTER> <BR><BR>
+
+The second of the two figures above shows how the half-amplifer subschematic
+connects into the differential amplifier schematic. Note that no pins (pin
+labels) have been explicitly called out in the subschematic. All connections
+are determined from context. Different contexts which xcircuit finds and
+interprets are marked with red circles on the differential schematic
+(the <A HREF=giffiles/fullamp.gif>unannotated version</A> of the schematic can be
+found here). The annotations, called out by number, are as follows: <P>
+
+<font color=red>
+<OL>
+ <LI> Port makes connection to a wire (polygon)
+ <LI> Port makes connection on one side but not on the other
+ <LI> Port makes connection to a label (pin)
+ <LI> Port makes connection to a pin of another object
+ <LI> Two ports in the subschematic get merged into one network
+ <LI> (not shown) Port connects to port on another subschematic
+</OL>
+</font>
+
+On any given schematic page, port connections between symbols, between
+subschematics, and from subschematics to symbols and vice versa, may be
+from any layer in the circuit hierarchy to any other layer in the circuit
+hierarchy. <P>
+
+<H2><A NAME="Task8">Task 8: Identifying electrical connections</A></H2>
+
+XCircuit has the ability to highlight all wires belonging to a single
+electrical network. This is a very useful feature for debugging
+schematics, finding shorts and open-circuits. The command for
+identifying network connectivity is menu selection
+<I>Netlist->Highlight Connectivity</I> and the default key binding
+for the same function is <B>Alt-w</B>. The key macro operates immediately
+on either selected elements or whatever element is nearest the cursor,
+while the menu item either operates immediately on any selected element
+or prompts for a mouse click on an element to show connectivity for.
+If multiple elements are selected prior to choosing the connectivity
+function, connectivity will be searched for the first item encountered
+in the select list which is part of a valid network. <P>
+
+As an example, load the file <TT>diffamp_test</TT> used previously in
+Task 7 (<TT>examples/diffamp_test.ps</TT> in the XCircuit source
+distribution). Place the pointer over any wire and type <B>Alt-w</B>.
+The whole network will be ``highlighted'' in green. Note some features
+of connectivity searches:
+<UL>
+ <LI> Global networks such as ground have all parts of the network
+ highlighted, even if they are physically separated on the
+ drawing.
+ <LI> Network selection is a different from element selection: It is
+ recursive. In the schematic drawing for "ampl_test" (Page 2),
+ networks inside the "half_amp" sub-schematic can be selected for
+ connectivity search, even though for purposes of normal move,
+ copy, etc., the "half_amp" can only be selected as an entire object.
+ <LI> Pins can be selected as well as wires, and pins belonging to a
+ network will be highlighted along with the rest of the network.
+ <LI> The name of the network is printed in the message window at the
+ bottom of the xcircuit screen. Hierarchy is relevant: A network
+ may have a different name depending on whether it is selected on
+ the top-level schematic, or somewhere down in the schematic
+ hierarchy. The network name displayed is that name belonging to
+ the network at the <I>highest</I> level of the hierarchy.
+ <LI> Additional networks can be highlighted without erasing the original.
+ To erase one network before starting another, click the right
+ mouse button once ("Cancel" operation).
+</UL>
+
+Currently, there is no method to detect and return a network name for
+pin positions connecting two objects (that is, networks which do not
+have a polygon or label explicitly attached to them in the schematic
+drawing). <P>
+
+<I>Note:</I> Network connectivity searches only work as described above
+in XCircuit version 2.3.5 rev. 1 and later. <P>
+
+<H2><A NAME="Task9">Task 9: A symbol on its own schematic</A></H2>
+
+File example "<TT>examples/logic8.ps</TT>" in the source distribution has
+an example of a symbol on its own schematic. Run xcircuit on this example
+file, and go to page 2, the schematic for the 2-input NAND gate. At the
+bottom of the schematic is a picture of the "NAND" symbol. Note that
+you can "push" ("&gt;" key) into the symbol picture, and then cross over
+("/" key) to the schematic, returning to where you started in a circular
+manner. You can do this all day until you run out of memory, so it is
+not recommended. Fortunately, when xcircuit generates the circuit netlist,
+it is not fooled into this recursive path. Instead, it detects the
+presence of the recursion and will not treat the symbol picture as part
+of the network. You can verify this by generating a SPICE netlist for
+circuit "logic8" and reading the resulting file "<TT>logic.spc</TT>":
+
+<FONT color=green>
+<BLOCKQUOTE>
+<PRE>
+*SPICE circuit "logic" from XCircuit v2.30
+
+.GLOBAL Vdd
+.GLOBAL GND
+
+.subckt invert Out In
+M1 Out In Vdd Vdd pmos
+M2 Out In GND GND nmos
+.ends
+
+.subckt nand Out In.1 In.2
+M1 Out In.1 Vdd Vdd pmos
+M2 Out In.1 ext13 GND nmos
+M3 ext13 In.2 GND GND nmos
+M4 Out In.2 Vdd Vdd pmos
+.ends
+
+X1 int1 Pin.1 invert
+X2 Pin.4 int1 Pin.2 nand
+X3 Pin.5 Pin.2 Pin.3 nand
+.end
+</PRE>
+</BLOCKQUOTE>
+</FONT>
+
+As you can see, the circuit has been created as intended, and the symbols
+marked on their own schematics do not present a problem. <P>
+
+<I>Caveat:</I> It is possible to do more subtle forms of recursion. For
+instance, in the "<TT>logic8</TT>" circuit, redraw the NAND2 schematic so
+that the output goes through a buffer made of two inverters. This is
+perfectly reasonable, by itself. Now, go to the inverter schematic, and
+in place of the nMOS + pMOS stack, put a NAND2 gate with its two inputs
+tied together between the In and Out pins. This is also perfectly reasonable,
+by itself. However, the two changes taken together try to define the
+NAND2 and inverter in terms of each other, which is recursive. Versions
+of xcircuit before 2.3.5 rev. 1 will simply crash. Later versions will
+detect the error as a suspiciously deep hierarchy, and halt the netlist
+process before the processor hits a stack limit. <P>
+
+<H2><A NAME="Task10">Task 10: "sim" format and flattened netlists</A></H2>
+
+"sim" netlists are normally associated with digital VLSI circuits, but they
+also can be useful for netlist comparisons of digital, analog, and mixed-signal
+VLSI circuits. The standard "sim" format defines device types for nFET
+(enhancement and depletion) and pFET transistors, resistors (explicitly
+defined and lumped), and capacitors. However, the format has variously
+been extended to cover other devices such as bipolar transistors, and any
+variation of any component, provided it gets a unique letter assigned for
+the device and is meaningful to whatever software uses the format downstream. <P>
+
+The main difference between "sim" and "SPICE" netlists is that SPICE allows
+hierarchical descriptions containing subcircuits, whereas "sim" is by
+definition a "flattened" version of a circuit. There is very little that
+is necessary to say here, other than to note the ability of XCircuit to
+generate flattened circuit netlists. XCircuit also has an option to
+generate flattened SPICE. Note the difference in output, for instance,
+between the output "logic.spc" for circuit "logic8" (shown in Task 9, above),
+and the following output "logic.fspc" for the same circuit (generated by
+<I>Netlist->Write flattened SPICE</I>:
+
+<FONT color=green>
+<BLOCKQUOTE>
+<PRE>
+*SPICE (flattened) circuit "logic" from XCircuit v2.30
+
+M1 int1 Pin.1 Vdd Vdd pmos
+M2 int1 Pin.1 GND GND nmos
+M3 Pin.4 int1 Vdd Vdd pmos
+M4 Pin.4 int1 nand1/ext13 GND nmos
+M5 nand1/ext13 Pin.2 GND GND nmos
+M6 Pin.4 Pin.2 Vdd Vdd pmos
+M7 Pin.5 Pin.2 Vdd Vdd pmos
+M8 Pin.5 Pin.2 nand2/ext13 GND nmos
+M9 nand2/ext13 Pin.3 GND GND nmos
+M10 Pin.5 Pin.3 Vdd Vdd pmos
+</PRE>
+</BLOCKQUOTE>
+</FONT>
+
+<H2><A NAME="Task11">Task 11: "pcb" type netlists</A></H2>
+
+XCircuit is ostensibly an ideal platform for generating schematic netlists
+to compare against PCB (printed circuit board) designs. However, by
+default (at least for now), xcircuit libraries are set up primarily for
+VLSI layout work, so PCB netlisting requires a little extra work
+(because a lot of users want to use XCircuit for PCB netlisting, I'd like
+some help putting together libraries of IC's). <P>
+
+PCB netlists are fundamentally different from SPICE and sim netlists.
+Instead of listing by <I>device</I>, the file lists by <I>network</I>.
+The format is flattened, probably on the assumption that printed circuit
+boards have no hierarchy. By default, xcircuit will list device pins
+(network connections) by the name of the object followed by a dash and
+the name of the pin to which the network connects. Any hierarchy present
+in the xcircuit file is flattened by separating layers of the hierarchy
+with slashes, as is done for the "sim" format. <P>
+
+For PCB symbols, the name of the object is used as the part name in the
+netlist unless the object's symbol has a "pcb:" info label. In addition,
+the sequence number of the part is assigned automatically unless declared
+as a parameter in the "pcb:" info label. Typically, PCB components are
+labeled "U" for integrated circuits, "R" for resistors, "C" for capacitors,
+"J" for connectors and jumpers, and so forth. The sequence number for
+each part, if automatically generated, will be unique with respect to
+the name used for the part in the netlist output.<P>
+
+Consider Harry Eatons's ``<B>LED</B>'' design which comes as an example
+in the "PCB" distribution. The relevant files are also linked
+here:
+<OL>
+ <LI> <A HREF=pcb/LED>LED</A> (a PCB-format file)
+ <LI> <A HREF=pcb/LED.NET>LED.NET</A> (a PCB netlist file)
+</OL>
+
+Creating the schematic is very complicated, so I've done much of the
+work to get you started. Here is an xcircuit file which can be used to
+create a (partial, because it's unfinished) netlist to compare
+against the <B>LED</B> printed circuit layout and netlist.
+
+<UL>
+ <LI> <A HREF=pcb/FlareLED.ps>FlareLED.ps</A> (an XCircuit-format file)
+</UL>
+
+The important thing to notice about this file is the way components are
+handled. Each component has an object name (a generic name, such as
+"Resistor" or a part description, such as "LTC490"), text which may or
+may not duplicate the title, and text which parameterizes the object
+(such as resistor and capacitor values). In addition, each object is
+parameterized for use in PCB. This requires a string inside the object,
+an "info label" which is interpreted by the pcb netlist generator in
+xcircuit. Also inside the object, not visible from the top level
+drawing, are pin numbers for each object. For integrated circuits,
+there is text on each pin which is a <I>functional</I> pin description.
+This is not needed for the netlist, but makes it much easier to understand
+the schematic.
+
+<OL>
+ <LI> Start up xcircuit on the file <A HREF=pcb/FlareLED.ps>FlareLED.ps</A>.
+ <LI> Go to the User Library (the library containing all of the ICs and
+ connectors in the schematic).
+
+ <CENTER><IMG SRC=pcb/flare_objects.gif><BR>
+ Integrated circuits and components library for FlareLED.
+ </CENTER> <BR>
+
+ <LI> Edit ("<B>&gt;</B>" key) the PIC controller (object named
+ "PIC16C54".
+ <LI> You will note several things: This is an 18-pin chip, with pin
+ labels corresponding to the actual DIP package pin numbers.
+ Next to each pin number is the functional name for that pin.
+ On the top level page, only the functional names appear. On
+ the top level page, the device can be flipped, rotated, etc.,
+ without regard to the physical PCB layout. It is only necessary
+ that the networks of wires correctly connect the pins of
+ all the components.
+ <LI> The "PIC16C54" object, like all the integrated circuits in the
+ schematic, has an "info label" which reads <BR><BR>
+ <font color=green><BLOCKQUOTE><PRE><TT>
+ pcb:U?
+ </TT></PRE></BLOCKQUOTE></font>
+
+ <CENTER><IMG SRC=pcb/pic_object.gif><BR>
+ PIC 16C54 object, as edited from the library (default parameters)
+ </CENTER> <BR>
+
+ <LI> Edit this info label ("<B>e</B>" key). Note that the question
+ mark is a parameter.
+ <LI> Escape from the label edit (3rd mouse button) and return to the
+ main page ("<B>1</B>" key). Now edit the <I>same</I> object,
+ the PIC16C54, from this page ("<B>&gt;</B>" key).
+ <LI> Now you will see that the info label reads
+ <font color=green><BLOCKQUOTE><PRE><TT>
+ pcb:U5
+ </TT></PRE></BLOCKQUOTE></font>
+ This is an <I>instance</I> value. It corresponds to the location
+ and label for an IC on the PCB layout. <BR><BR>
+
+ <CENTER><IMG SRC=pcb/pic_instance.gif><BR>
+ PIC 16C54 instance, as edited from the top page (instanced parameters)
+ </CENTER> <BR>
+
+ <LI> End the label edit and return once again to the top level page.
+ From the menu, choose <I>Netlist->Write pcb</I>. The result
+ is a file named <TT>FlareLED.pcb</TT>. Compare this file to
+ the supplied netlist file named <TT>LED.NET</TT>. The XCircuit
+ schematic is not complete, but the parts that are correspond in
+ both netlist files.
+ <LI> <I>Challenge</I>: Finish this schematic and show that the two
+ netlists are the same (``Layout vs. Schematic'', or ``LVS'').
+ <LI> <I>Another Challenge</I>: Create an xcircuit library containing
+ the entire 7400 digital IC series and send it to me so I can
+ post it on this website.
+</OL>
+
+<H2><A NAME="Task12">Task 12: Multiple-gate chips in PCB netlists</A></H2>
+
+Pins can be parameterized beginning in version 2.5.2 (it is allowed in
+earlier versions but will cause invalid netlist output). Pins normally
+work differently than label strings when making substitutions during
+netlist generation; it is the network name which is substituted.
+However, PCB-type netlists write pin names directly to the output, and
+this is where parameterized pin names can be useful: For example, a
+``quad part'' like a 7400 quad NAND chip has four NAND gates which are
+identical except for their pin numbers on the package. Normally, a
+PCB netlist would declare these as four parts, say, ``U1-1'' through
+``U1-4''. By parameterizing all of the pin names, four instances can
+be made representing the four gates inside the 7400 chip, each having
+the correct pinout. <P>
+
+A method for saving the pinouts of gate subunits in chips was added
+to version 2.5.2 along with the meaningful method for generating PCB
+netlists from parameterized pin names. This method allows multiple
+instances of a single object to appear on the same library page.
+These copies should represent the object with different parameter
+values. The most common use of this method is to parameterize pins
+of a logic gate that is a subunit of a multiple-gate IC, and show
+each of the subunits on the library page, where they can be used to
+generate a PCB netlist. <P>
+
+Using XCircuit 2.5.2 or later, installed, start xcircuit and go to the
+fourth library page ``<B>Library: quadparts</B>''. You will see the
+following set of objects (partial view of the library):
+
+<CENTER><IMG SRC=giffiles/quadparts.gif><BR><BR>
+Partial view of the ``Quadparts'' library (from preliminary version).
+</CENTER> <BR><BR>
+
+Note that there are four copies of each named object. Each of the copies has
+the same name, but three of the names are ``shaded out'' in a gray color.
+The part with the name written in black is the original library part. It
+contains parameters, but like standard library page objects, it displays all
+of the default values for these parameters. As in Tasks 4 and 5, editing
+parameter values in this library object will change the default values of
+those parameters. The objects with the names printed in gray are
+called ``virtual objects.'' They act like objects on a page rather than
+objects in a library. Parameters in these objects may take on individual
+values, and those specific values are copied along with the object when
+it is selected and dragged back to a page. <P>
+
+<CENTER><IMG SRC=giffiles/nand4.gif><BR><BR>
+Editing a library virtual copy (instance) of gate ``quadnand''.
+</CENTER> <BR><BR>
+
+From the library page, grab all four ``quadnand'' objects and bring them
+back to Page 1. With the four objects, one can make, for instance, a
+delay flip-flop implementation from a single 7400 chip. This is shown
+below:
+
+<CENTER><IMG SRC=giffiles/dff.gif><BR><BR>
+<A HREF=psfiles/dff.ps>Delay Flip-Flop</A> using the ``quadparts'' library.
+</CENTER> <BR><BR>
+
+After building the circuit, select <I>Netlist->Write pcb</I>. The
+result is a valid PCB netlist for the circuit:
+
+<FONT color=green>
+<BLOCKQUOTE>
+<PRE>
+!Q U2-2-5 U1-1-3
+D U3-3-9
+CLK U4-4-13 U3-3-10
+int5 U4-4-12 U3-3-8 U2-2-4
+int6 U4-4-11 U1-1-2
+Q U2-2-6 U1-1-1
+</PRE>
+</BLOCKQUOTE>
+</FONT>
+
+<H2><A NAME="Task13">Task 13: Modifying netlist formats</A></H2>
+
+The Python interpreter is supposed to make new netlist formats easy to
+implement. However, the Python interface does not yet include access
+to netlist information, so for the moment, netlist formats are limited. <P>
+
+As it stands, netlists must be one of three formats:
+<OL>
+ <LI> Flattened ("sim" or SPICE)
+ <LI> Hierarchical (with subcircuits in SPICE "subckt" format)
+ <LI> Netlist (flattened, in a PCB netlist format)
+</OL>
+
+Flattened netlists are the easiest to implement new formats in, since
+the only structure in the file is determined by the elements themselves
+(not counting comment lines, such as the first line that xcircuit writes
+to the netlist file). The other two formats contain syntax that is
+(currently) hard-coded into xcircuit (the "subckt" command in hierarchical
+SPICE, and the entire syntax of PCB). Information about how to write
+devices is encoded into ``informational labels'' (otherwise abbreviated
+as ``info labels''). The syntax of info labels is described above in
+<B>Task 5</B>. <P>
+
+Modifications to netlist formats can be useful in several ways:
+<OL>
+ <LI> Implement a completely different netlist type (some subset of VHDL,
+ for instance)
+ <LI> Modify an existing format (hspice or pspice syntax vs. ordinary
+ Berkeley spice3).
+ <LI> Avoid explicitly drawing circuit schematics for simple devices.
+ <LI> Write output at the gate level instead of the transistor level.
+</OL>
+
+The last two require some explaining, so start up xcircuit and prepare
+for another task. <P>
+
+<H3> Aggregate output per device </H3>
+Here, we will change an "inverter" into a fundamental device consisting
+of two transistors in the usual CMOS configuration for the inverter.
+By default, XCircuit neither attaches schematics to gates nor defines
+aggregate (multiple line) output for a gate because there are too many
+ways to define a gate. For instance, the inverter could be an nMOS
+device with a p-pullup, or it could be a bipolar-based TTL inverter,
+etc., ad nauseum.
+
+<OL>
+ <LI> Go to the first library page and drag back an inverter to the
+ first page.
+ <LI> Add some pin labels to the input and output nodes. Call them,
+ say, "in" and "out" (or something less boring, if you prefer).
+ <LI> Edit the inverter device (<B>&gt;</B> key)
+ <LI> Start an "info label" (<B>I</B> key, or <I>Netlist->Make Info Pin</I>
+ from the menu)
+ <LI> Type <BR>
+ <TT>sim:n %pIn GND %pOut</TT>&lt;Alt-Enter&gt;<TT>p %pIn Vdd %pOut</TT><BR>
+ where "&lt;Alt-Enter&gt;"
+ is the key combination Alt + Enter (also available using the
+ menu selection <I>Text->Insert->Carriage Return</I>).
+ Note that spaces, tabs, and other characters will transfer
+ to the netlist output, although embedded commands such as color,
+ font, and size change will not.
+ The embedded carriage return <I>will</I> end up in the netlist
+ output, as a real carriage return/newline. The result is shown
+ below. <BR><BR>
+
+ <CENTER><IMG SRC=giffiles/aggregate.gif><BR>
+ Inverter with informational label for "sim" netlist output.
+ </CENTER> <BR>
+
+ <LI> Return to the top level page, choose "File->Write Output" to
+ change the name from "Page 1" to something more useful.
+ Then, from the menu, select <I>Netlist->Write sim</I>.
+ The netlist output will look something like the following: <BR>
+
+<font color=green>
+<BLOCKQUOTE>
+<PRE><TT>
+| sim circuit "aggregate" from XCircuit v2.30
+n in GND out
+p in Vdd out
+</TT></PRE>
+</BLOCKQUOTE>
+</font>
+
+ <LI> If you return to editing the symbol "invert", you will find
+ that after writing the netlist, the "Symbol" button in
+ the lower left-hand corner of the XCircuit window turned
+ green, indicating that this symbol is now considered to be
+ a "fundamental" object. That is, it has an informational
+ label and contains no subcircuits.
+</OL>
+
+<H3> Output not on the device (transistor) level </H3>
+
+Suppose, in the above example, we didn't know or care what is the
+transistor-level implementation of the inverter, but wanted a SPICE
+file showing the hierarchy, for which an inverter subcircuit could
+be inserted at a later point.
+
+<OL>
+ <LI> Repeat the above task through number <B>4</B>.
+ <LI> Write for the info label <BR>
+ <TT>spice:X%i %pIn %pOut inverter</TT>
+ <LI> Return to the top level page, and write a SPICE netlist.
+ The netlist output will look something like the following: <BR>
+
+<font color=green>
+<BLOCKQUOTE>
+<PRE><TT>
+*SPICE circuit "aggregate" from XCircuit v2.30
+
+X1 in out inverter
+.end
+</TT></PRE>
+</BLOCKQUOTE>
+</font>
+
+ <LI> While this deck is not directly simulatable, it only awaits the
+ insertion of an inverter model in the form of a subcircuit.
+</OL>
+
+<H2><A NAME="Task14">Task 14: Example: A bridge rectifier for a PCB</A></H2>
+
+This task will summarize most of what has been covered above in the tutorial
+with a practical example, a power supply bridge rectifier for a printed circuit
+board layout. The example will work through detailed explanations of each
+step, for the benefit of the impatient. <P>
+
+The bridge rectifier is a simple power supply circuit which transforms an AC
+supply (e.g., wall outlet) into a DC current for powering a circuit. The
+"bridge" is a diode bridge, a loop of four diodes which act as a full-wave
+rectifier. The bridge also acts as a nonlinear resistance in a simple
+single-pole R-C low-pass filter. The filter pole is set by a large
+polarized capacitor on the rectifier output. The larger the capacitor,
+the steadier the output voltage, including resistance to short spikes and
+dropouts of the AC supply. <P>
+
+Usually the bridge rectifier circuit drives the input of a voltage regulator
+to clean up the 120Hz bumps generated by the less-than-ideal lowpass filter,
+and to adjust the voltage between the transformer and the circuit being
+powered. For simplicity, this example will not consider the voltage
+regulator. <P>
+
+For more information about bridge rectifiers, see Horowitz and Hill,
+<I>The Art of Electronics</I>, 2nd edition, pages 45 and following
+(Cambridge Press, 1989). <P>
+
+<H3>Step 1</H3>
+
+ If you have xcircuit version 2.3.3 after revision 6, there will be a
+ symbol "Diode" (with capital-D) in the analoglib2.lps file (the
+ second library page). If not, you can update your library from this
+ link: <A HREF=../xcircuit/psfiles/analoglib2.lps>analoglib2.lps</A>,
+ and skip to Step 2. Alternatively, you can
+ use the following instructions to generate the PCB-compatible diode
+ from the simple diode on the first library page (named "diode", no
+ capital letter). <P>
+
+ The diode symbol "diode" in the first library is not configured for use in
+ PCBs. This can be changed easily. Go to the first library page (<TT>l</TT>
+ key macro), and edit the diode symbol (<TT>&gt;</TT> key macro).
+ Change the pin names to "1" and "2" (edit, or <TT>e</TT> key) to match
+ PCB naming conventions. Finally, add an "info label" for the PCB
+ netlister (<TT>I</TT> key, or else create a normal label then select
+ menu item <I>Netlist->Convert Label To...->Info label</I>). The label
+ text should be
+ <font color=green>
+ <BLOCKQUOTE><PRE><TT>
+ pcb:D?
+ </TT></PRE></BLOCKQUOTE>
+ </font>
+ After creating the label, use the second mouse button to drag a select
+ box over the question mark. Only the question mark should be highlighted.
+ Then select menu item <I>Text->Parameterize</I>. As described earlier in
+ the tutorial, the PCB netlister will use this parameterized string to
+ determine a part number for the diode, or else the part number can be
+ explicitly declared by editing the info label from each of the four
+ instances of symbol "diode" that we will generate.
+
+ <CENTER><BR><IMG SRC=giffiles/pcbdiode.gif><BR></CENTER> <BR>
+
+ Return to a drawing page (<TT>&lt;</TT> key, <TT>1</TT> key to go to Page 1)
+ and continue with Step 2.
+
+<H3>Step 2</H3>
+
+ Go to the library (<TT>l</TT> key, twice to get to the analoglib2 page,
+ or once if using an edited version of the simple diode, from Step 1)
+ and select the diode for copying (<TT>c</TT> key).
+ This action will take you back to the main
+ drawing page, with a diode instance in tow. While the diode is still
+ selected, rotate it (<TT>r</TT> key, as many times as necessary).
+ Place it four times with a click of the first (left) mouse button,
+ and finish with a click of the third (right) mouse button. Rotate and
+ position the diodes as shown below.
+
+ <CENTER><BR><IMG SRC=giffiles/bridge2.gif><BR></CENTER> <BR>
+
+<H3>Step 3</H3>
+
+ Connect the diodes together in a bridge configuration. While the
+ diode endpoints are not quite on the drawing grid when the diode is
+ rotated 45 degrees, they are fairly close (as drawn, see figure
+ above), and there is some "slop" in the netlist generator when
+ considering whether two wires are connected together. No special
+ measures are necessary to ensure the connection.
+
+ <CENTER><BR><IMG SRC=giffiles/bridge3.gif><BR></CENTER> <BR>
+
+ Make a schematic out of the rectifier by selecting all the components
+ drawn so far, typing <TT>m</TT> to "make" the object, and name
+ the object "rectifier". This is a "subschematic", as described
+ above in the tutorial, and pins will be determined from context.
+
+<H3>Step 4</H3>
+
+ Grab the transformer symbol from the "analoglib2" library (2nd library
+ page). Add wires to the transformer input, ending in terminals for
+ the input AC supply. Name these terminals "V+" and "V-" (typographical
+ suggestion: use the Symbol font for "+" and "-").
+
+ <CENTER><BR><IMG SRC=giffiles/bridge1.gif><BR></CENTER> <BR>
+
+ Connect the transformer and the rectifier together as shown.
+
+ <CENTER><BR><IMG SRC=giffiles/bridge4.gif><BR></CENTER> <BR>
+
+<H3>Step 5</H3>
+
+ Grab two capacitors (one polarized, one not) from the second library
+ page. These are the capacitors with values listed.
+ They are already configured for use with a PCB netlist. <P>
+
+ The capacitors default to a picofarad value (for use with VLSI
+ layouts, not PCBs), so the value string needs to be edited to
+ change this to the "micro" symbol for microFarads. <P>
+
+ <font color=red>Typographical note:</font> <BR>
+ The best way to do this is to change the font of the whole
+ string from "Times-Roman" to "Times-RomanISO" (use menu option
+ <I>Text->Encoding->ISO-Latin1</I> or, while editing the label,
+ use the <I>Alt-</I><TT>e</TT> key combination). The "micro"
+ symbol (Greek "mu") is available from the font symbol table (accessed
+ with the backslash key while editing text). The change to ISO
+ encoding will be necessary on both the value string and the "SPICE"
+ info label. <P>
+
+ <font color=red>Netlist note:</font> <BR>
+ The SPICE netlist generator will convert the "mu" symbol to the "u"
+ used by SPICE. This happens regardless of whether the ISO-encoded
+ "mu" or the Symbol font "mu" is used. Of course, one may also
+ write ASCII "u" in the value string.
+
+ <CENTER><BR><IMG SRC=giffiles/pcbcap.gif><BR></CENTER> <BR>
+
+<H3>Step 6</H3>
+
+ Connect all the parts together on the top level page as shown.
+
+ <CENTER><BR><IMG SRC=giffiles/bridge6.gif><BR></CENTER> <BR>
+
+ Add finishing touches, and the completed bridge rectifier should
+ look something like the one shown below.
+
+ <CENTER><BR><IMG SRC=giffiles/bridge.gif><BR></CENTER> <BR>
+
+ The xcircuit file can be obtained here: <A HREF=psfiles/bridge.ps>bridge.ps</A>.
+
+<H3>Step 7</H3>
+
+ Select menu option <I>File->Write XCircuit PS</I> and select a "Page label"
+ for the file. This will be the name used by the netlist generator for
+ the netlist file name. <P>
+
+ Generate the PCB netlist by selecting menu option <I>Netlist->Write pcb</I>.
+ The result is shown below:<BR><BR>
+
+ <font color=red>
+ <BLOCKQUOTE><PRE><TT>
+ V- T1-2
+ V+ T1-1
+ int5 T1-3 rectifier1/D4-1 rectifier1/D3-2
+ int6 T1-4 rectifier1/D2-1 rectifier1/D1-2
+ Vout rectifier1/D3-1 rectifier1/D1-1 C2-1 C1-1
+ GND rectifier1/D4-2 rectifier1/D2-2 C2-2 C1-2
+ </TT></PRE></BLOCKQUOTE>
+ </font>
+ <BR>
+
+ and can also be obtained from this link:
+ <A HREF=pcb/bridge.pcb>bridge.pcb</A>.
+
+<H3>Step 8</H3>
+
+ The example is essentially done, but we can take it one step further
+ by generating a symbol called "power_supply" to represent this circuit
+ in a larger schematic. <P>
+
+ Go to an empty page (Page 2, perhaps) and generate the following figure:<BR>
+
+ <CENTER><BR><IMG SRC=giffiles/powersup.gif><BR></CENTER> <BR>
+
+ Labels in black are normal text (created with the <TT>t</TT> key), and labels
+ in red are pins (created with the <TT>T</TT> key). After drawing, select
+ everything and put it all into an object (<TT>m</TT> key). Name the object
+ "power_supply". <P>
+
+<H3>Step 9</H3>
+
+ Now go back to Page 1, the bridge rectifier schematic. Choose the menu
+ selection <I>Netlist->Associate with Symbol</I>. You will be taken to
+ the library directory. Click (once) on the user library. You will be
+ taken directly to the user library. Finally, click (once) on the symbol
+ "power_supply". Now you should be returned to the bridge rectifier
+ schematic, with the difference that there is a white button labeled
+ "Symbol" in the bottom left-hand corner of the window. Clicking on the
+ button toggles the drawing window between the schematic and its
+ (newly associated) symbol. <P>
+
+<H3>Step 10</H3>
+
+ Return to Page 2, the top-level schematic with the "power_supply" symbol.
+ Try out the following (trivial to the point of uselessness) circuit
+ (also available at this link: <A HREF=psfiles/powersup.ps>powersup.ps</A>):
+ <BR>
+
+ <CENTER><BR><IMG SRC=giffiles/powersup2.gif><BR></CENTER> <BR>
+
+ Go to menu selection <I>File->Write XCircuit PS</I> and rename the "Page
+ label" to "powersup". Then select <I>Netlist->Write pcb</I> to
+ generate a new PCB netlist. <P>
+
+ Now look at the result: <BR><BR>
+
+ <font color=red>
+ <BLOCKQUOTE><PRE><TT>
+ NET1 power_supply1/T1-3 power_supply1/rectifier1/D4-1 \
+ power_supply1/rectifier1/D3-2
+ NET2 power_supply1/T1-4 power_supply1/rectifier1/D2-1 \
+ power_supply1/rectifier1/D1-2
+ In+ power_supply1/T1-1
+ In- power_supply1/T1-2
+ Out power_supply1/rectifier1/D3-1 power_supply1/rectifier1/D1-1 \
+ power_supply1/C2-1 power_supply1/C1-1 R1-1
+ GND power_supply1/rectifier1/D4-2 power_supply1/rectifier1/D2-2 \
+ power_supply1/C2-2 power_supply1/C1-2 R1-2
+ </TT></PRE></BLOCKQUOTE>
+ </font>
+ <BR>
+
+ which can also be obtained from this link:
+ <A HREF=pcb/powersup.pcb>powersup.pcb</A>.
+
+ Note that the main difference is that the netlist is hierarchical, with
+ components inside the power supply being referenced by the prepended
+ name "power_supply1". The resistor, the only component on the top-level
+ page, is not so prefixed. Throughout the netlist, net names take the
+ name given in the highest level of the hierarchy. <P>
+
+<HR>
+<P><A HREF=../welcome.html><IMG ALIGN=middle SRC=../giffiles/bluebutton.gif
+ BORDER=0></A> Back to the xcircuit home page. . .
+<P><IMG SRC=../giffiles/line1.gif><P>
+email: <I>tim@bach.ece.jhu.edu</I>
+</BODY>
+</HTML>