aUCBLogo Demos and Tests / nf_amplifier_layout


setCaseIgnored false

to nf_amplifier_layout
   
elements=
   
[   [copper
         
4   60
         
3   60
         
60   60
         
60   53
         
60   60
         
60   46
         
50   51
         
50   51
         
60   44
         
57   55
         
48   48
         
41    40
         
40   40
         
40   41
         
39   37
         
44   45
         
57   57
         
57   37
         
59   24
         
41   39
         
41   41
         
43   43
         
43   35
         
35   36
         
34   36
         
35   36
         
35   36

         
30   30
         
30   23
         
30   30
         
30   16
         
20   21
         
20   21
         
30   14
         
27   25
         
18   18
         
11    10
         
10   10
         
10   11
         
o  9   o  7
         
14   15
         
27   27
         
D  7   27
         
11   q  9
         
11   11
         
13   13
         
13   v  5
         
l  5   l  6
         
q  4   q  6
         
x  5   x  6
         
B  6   31
         
31   31
         
         
1   4
         
1   5
         
3   7
         
7   7
         
5   7
      
]
      
[wire
         
51   51
         
57   57
         
54   54
         
45   45
         
37   37
         
36   36
         
36   36

         
21   21
         
27   27
         
24   24
         
15   15
         
o  7   D  7
         
b  6   l  6
         
x  6   B  6
         
         
1   1
         
3   3
      
]
      
[clamp
         
60   60
         
60   60
         
57   57

         
30   30
         
30   30
         
27   27
         
         
33   33
         
6   6
      
]
      
[diode
         
54 50
         
50 54

         
24 20
         
20 24
         
         
4   4
      
]
      
[resistor
         
53   48
         
48   48
         
46   41
         
43   43
         
39   39
         
38   38
         
36   36
         
35   35

         
23   18
         
18   18
         
16   11
         
13   13
         
q  9   v  9
         
o  8   s  8
         
q  6   v  6
         
l  5   q  5
      
]
      
[condensator
         
55    55
         
48   48
         
40   39
         
40   40
         
34   34
         
35   35

         
25    25
         
18   18
         
10   o  9
         
10   10
         
q  4   s  4
         
v  5   x  5
      
]
      
[IC
         
42.5   42.5
         
         
12.5   12.5
      
]
   
]
   
   
cs ht WindowMode
   
size=12
   
x0=-390
   
y0280
   
   
red=rgb 1 0 0
   
blue=rgb 0 0 1
   
grey=HSB 0 .05 .9
   
grey2=HSB 240 .05 .9
   
grey3=HSB 200 .03 .9
   
grey4=HSB 300 .03 .9
   
drawClampboard
   
   
yt=Table 20
   
for [97 97+26]
   
[   c=char i
      
yt.c=i-96
   
]
   
for [65 65+12]
   
[   c=char i
      
yt.c=i-64+26
   
]
   
foreach elements
   
[   proc=first ?
      
coors=bf ?
      
while [not empty? coors]
      
[   y=yt.(coors.1)
         
x=coors.2
         
y2=yt.(coors.3)
         
x2=coors.4
         
run proc
         
coors=bf bf bf bf coors
      
]
   
]
end

to drawwire
   
setPenSize size*0.2
   
setXY x0+size*x y0-size*y
   
pd 
   
setFC pc
   
fillCircle size*0.25
   
setXY x0+size*x2 y0-size*y2 
   
fillCircle size*0.25
   
pu
end

to drawblock
   
setPS (list size*0.7 size*0.7)
   
setXY x0+size*x y0-size*y
   
pd setXY x0+size*x2 y0-size*y2 pu
end

to wire
   
setPC "black
   
drawwire
end

to copper
   
setPC HSB 40 .3 .8
   
drawblock
end

to resistor
   
setPC "grey
   
drawwire
   
sx=x sx2=x2 sy=y sy2=y2
   
x=(2*sx+sx2)/3
   
y=(2*sy+sy2)/3
   
x2=(sx+2*sx2)/3
   
y2=(sy+2*sy2)/3
   
setPC HSBA 0 1 .8 .3
   
drawblock
end

to diode
   
setPC rgba 0 0 0 .5
   
drawwire
   
sx=x sx2=x2 sy=y sy2=y2
   
x=(2*sx+sx2)/3
   
y=(2*sy+sy2)/3
   
x2=(sx+2*sx2)/3
   
y2=(sy+2*sy2)/3
   
setPC rgba 0 0 0 .3
   
drawblock
end

to clamp
   
setPC rgba 0 1 0 .3
   
setPS (list size*size*4)
   
disableRoundLineEnds
   
setXY x0+size*x y0-size*y
   
pd setXY x0+size*x2 y0-size*y2 pu
   
enableRoundLineEnds
end

to condensator
   
setPC HSBA 0 0 0 .2
   
drawwire
   
sx=x
   
sy=y
   
x=(x+x2)/2
   
y=(y+y2)/2
   
setXY x0+size*x y0-size*y
   
pd   circle size*pu
   
x=(2*sx+x2)/3+0.5
   
y=(2*sy+y2)/3
   
setXY x0+size*x y0-size*y
   
setPC 0
   
pd   Label "+ pu
   
x=(sx+x2*2)/3-0.5
   
y=(sy+y2*2)/3
   
setXY x0+size*x y0-size*y
   
setPC 0
   
pd   Label "- pu
end

to IC
   
setPC HSBA 0 1 .7 .5
   
setPS (list size*size*3)
   
disableRoundLineEnds
   
setXY x0+size*x y0-size*y
   
pd setXY x0+size*x2 y0-size*y2 pu
   
enableRoundLineEnds
end

to pix c
   
pu 
   
setXY x0+x*size y0-y*size  
   
setPC c
   
pd
   
setPenSize size*0.1
   
Circle 0.25*size
   
pu
end

to connect
   
setPenSize size*0.2
   
pu 
   
setXY x0+(x+0.25)*size y0-y*size  
   
pd
   
setXY x0+(x+0.75)*size y0-y*size  
   
pu
end

to lab ch
   
pu setXY x0+x*size y0-y*size  Label ch
end

to ybse
   
for [5 40 5][lab y]
end

to drawClampboard
   
for [1 19]
   
[   y=2*i-1
      
for [1 31] 
      
[   x=j*2-1   pix grey  connect
         
x=j*2      pix grey2  connect
      
x=63 pix grey
      
y=y+1
      
for [1 31] 
      
[   x=j*2-1   pix grey  connect
         
x=j*2      pix grey  connect
      
x=63 pix grey3
   
]
   
y=39
   
for [1 31] 
   
[   x=j*2-1   pix grey  connect
      
x=j*2      pix grey2  connect
   
x=63 pix grey
   
setPC "black
   
home
   
right 90
   
x=0   
   
for [1 26][lab char 96+y]
   
for [27 39][lab char 65-27+y]
   
y=0
   
for [1 63][lab char 48+mod x 10]
end