PS
cct_init(svg_font(Helvetica,7pt__))
# HeathkitDPV.m4
#                               Landscape
maxpswid = 11
maxpsht = 8.5

#                               llabel and rlabel without math mode
define(`Llabel',`llabel(
ifelse(`$1',,,`m4lstring(`$1',"`$1'")'),
ifelse(`$2',,,`m4lstring(`$2',"`$2'")'),
ifelse(`$3',,,`m4lstring(`$3',"`$3'")'))')
define(`Rlabel',`rlabel(
ifelse(`$1',,,`m4lstring(`$1',"`$1'")'),
ifelse(`$2',,,`m4lstring(`$2',"`$2'")'),
ifelse(`$3',,,`m4lstring(`$3',"`$3'")'))')

#                               Grid parameters
 picwid = 8.5
 picht = 6
 g = 1/12

#                               Element scaling
 linewid = 8*g
define(`dimen_',dimen_*4/5)
#                               Default sizes
 boxwid = 2*g
 boxht = 2*g
 arrowht = arrowht*2/3

#                               Grid
 linethick_(0.4)
 for i=0 to picwid/g do { line color "lightgray" up picht from (i*g,0) }
 for i=0 to picwid/g by 10 do { sprintf("%g",i) at (i*g,0) below }
 for i=0 to picht/g do { line color "lightgray" right picwid from (0,i*g) }
 for i=0 to picht/g by 10 do { sprintf("%g",i) at (0, i*g) rjust }
 move left 2*g from (0,0)
 linethick_(0.8)

 spline outlined "white" shaded "white" \
   from (0,picht+g) down g then down picht/5 then right picwid/5
 for i=1 to 4 do { continue down picht/5 then right picwid/5 }
 continue right 2*g then up 2*g
 continue up picht-2*g then up g then left g

#                               Place the bottom inductor on the grid
 I1: inductor(down_ 13*g from (80,22)*g,,13,,g)
 I2: inductor(down_ 10*g from I1.start+(0,21*g),,10,,g)
 I3: inductor(down_ 10*g from I2.start+(0,12)*g,,10,M,g)
   line from M4Core1.end to (M4Core1,I1.end)
   line from M4Core2.end to (M4Core2,I1.end)
 Scrn: 2 between M4Core1.start and M4Core2.start
   line dashed from Scrn to (Scrn,I1.end)
   ground
 I4: inductor(up_ 5*g from (Scrn.x+M4Core1.x-I2.x,I2.start.y-2*g),,5,,g)
 I5: inductor(up_ 5*g from (I4,I2.end+(0,g)),,5,,g)

#                               Circuit board
 Board: box dashed thick 2 wid 58*g ht 55*g with .se at I1.end+(-7,-2)*g
 P: box invis wid 12*g ht 4*g with .s at Board.sw+(26*g,0) \
   "POWER SUPPLY" "CIRCUIT BOARD"
 line dashed thick 2 from P.sw to P.nw; line dashed thick 2 to P.ne
 line dashed thick 2 to P.se

define Pad { P`$1': box fill_(1) "$1" }
#                               Board connections on the right
 Pad(1) at (Board.e,I1.end)
   line from P1.e to I1.end "RED" above
 Pad(2) at (Board.e,I1.start)
   line from P2.e to I1.start "RED" above
 Pad(3) at (Board.e,I2.end)
   GRN1: line left 4*g from I2.start "GRN" above ; ground
   GRN2: line from P3.e to I2.end "GRN" above
   spline <-> from GRN2.end+(-g,0) up 2.5*g right 0.5*g then up 5*g left g \
     then up 2.5*g right 0.5*g
   box invis fill_(1) wid 3*g ht g "6 VAC" at I2-(2*g,0)
 Pad(4) at P3-(0,3)*g
   line right_ 3*g from P4.e "BRN" above
   arrow down_ 2*g ht arrowht*2/3
   "TO DIAL" "LAMPS" at Here+(0,-g)
 Pad(5) at (Board.e,I3.end)
   line from P5.e to I3.end "BLU" above
 Pad(7) at (Board.e,I3.start)
   line from P7.e to I3.start "BLU" above
 Pad(6) at 0.5 between P5 and P7
   line from P6.e to I3 "BLU-YEL" above

#                               Power wiring, plug, switch
define(`socket',`[
 Outer: box wid dimen_*2/3 ht dimen_/2*3/4
 L: box wid dimen_/16 ht dimen_/4 at Outer-(dimen_/6,0)
 R: box wid dimen_/16 ht dimen_/4 at Outer+(dimen_/6,0)
 line from Outer.w to L.w
 line from Outer.e to R.e
 ] ')

 BLK: line from I4.end to (int(I4.end.x/g+8)*g,I4.end.y) "BLK" below ; dot
   b = lin_leng(BLK)
 BLKYEL: line from I4.start right_ b "BLK-YEL" above ; dot
 BLKGRN: line from I5.end right_ b "BLK-GRN" below ; dot
 BLKRED: line from I5.start right_ b "BLK-RED" above ; dot
   line right_ g; PL: dot
   line from BLKYEL.end right g then to Here+(0,-g)
   fuse(down_ 3*g,D)
   {"3 A FUSE" "SLOW BLOW" at last line+(-5*g,0) }
   line to (Here.x,int(Here.y/g)*g-g); dot
 Sckt1: socket at Here+(5,0)*g
   line from Sckt1.w to (PL,Sckt1); A: dot; "A" rjust
   line from Sckt1.e right_ lin_leng(last line); B: dot; "B" ljust
 Sckt2: socket at (Sckt1,P1+(0,6)*g)
   line from Sckt2.w to (A,Sckt2); dot
   line from Sckt2.e to (B,Sckt2); dot
 Sckt3: socket at (Sckt1,P1+(0,2)*g)
   line from Sckt3.w to (A,Sckt3); dot
   line from Sckt3.e to (B,Sckt3); dot

define(`plug',`[ w = dimen_*2/3; q = 0.25*w
 F: line right_ w
   arc cw from F.start to F.end with .c at F
 T1: F+(-q,w/2+g/2)
 T2: F+( q,w/2+g/2)
   line from T1 to (T1,F)-(0,2*g)
   line from T2 to (T2,F)-(0,2*g) ]')

 PP: plug with .F at Sckt3+(0,-8)*g
   {"120 VAC" ljust "50/60 Hz" ljust at PP.e }

define(`pwrswitch',`[ right; circlerad = 1.75*g/2
 C1: circle "1"
 C4: circle "4"
 C2: circle "2" with .n at C1.s+(0,-C1.diam/2)
 C5: circle "5"
 C3: circle "3" with .n at C2.s+(0,-C1.diam/2)
 C6: circle "6"
 hatchbox(wid g ht C2.n.y-C3.s.y,0.05) with .w at 0.5 between C5.e and C6.e
 ]')

 Psw: pwrswitch with .C4.e at Sckt1+(0,-4*g)
   "POWER" at Psw.w+(-2*g,0) rjust
   arrow up Psw.ht/2 at Psw.e+(1.5*g,0)
   "ON" above; "OFF" at last arrow.start below
   line from Psw.C1.w to (A,Psw.C1) then to A
   line from Psw.C2.w to (A,Psw.C2); continue to (Here,PP.T1) then to PP.T1
   line from PP.T2 to (B,PP.T2) then to (B,I4.end) then to I4.end
   line from BLKGRN.end to (B,BLKGRN); dot

#                               Bottom connections
 Pad(25) at Board.se+(-3,0)*g
 R516: resistor(down_ 6*g from P25.s)
   {"R516" "22" at last line+(-2*g,0)} ; ground(,T)
   dot(at P25.s+(0,-g)); line right_ 5*g
   reversed(`source',down_ 4*g,B)
   {"#49" ljust "HI" ljust "TEMP" ljust at last line+(2*g,0) }
   line to (P25,Here); dot
   t = linethick; linethick_(0.4)
   arrow <- from P25.s+(0,-g/2) right_ 2*g up_ g/4; "BRN" ljust; linethick_(t)

 Pad(24) at P25+(-4,0)*g
   line from P24.s to (P24,R516.end); ground(,T)
 Pad(23) at Board.sw+(12*g,0)
   line from P23.s to (P23,R516.end); ground(,T)

 Pad(22) at Board.sw+(0,3)*g
 R514: resistor(right_ 8*g from P22.e); Llabel(,R514); Rlabel(,680 K)
   dot; { ground }
   line to (P23,Here) then to P23.n

#                               Diode bridge
 BE: dot(at (P24,I1))
   d1h = lin_leng(I1)/2
   diode(left_ d1h up_ d1h); Rlabel(,,D508)
 BN: dot
   diode(left_ d1h down_ d1h); Rlabel(D506)
 BW: dot
   diode(from BE left_ d1h down_ d1h); Llabel(,,D509)
 BS: dot
   diode(left_ d1h up_ d1h); Llabel(D507)
   capacitor(down_ from BN to BS,C); Llabel(C507,,.22)
   line from BE to P24.n
   line from BN to P2.w
   line from BS to P1.w
   spline <-> from (BE.x+2*g,BS.y) \
     up d1h/2 right g/2 then up d1h left g then up d1h/2 right g/2
   box invis fill_(1) ht 2*g wid 2*g "57" "VAC" at last spline

#                               Left board connections
 Pad(21) at (Board.w,BW); line from P21.e to BW
 Pad(19) at P21+(0,-3*g)
 Pad(20) at P21+(0, 3*g)

#                               Transistor with circles
define(`hbi_tr',`[ linewid = linewid*4/4.16
 Q: bi_tr(`$1',`$2',`$3',E)
 E: circle rad m4_xyU at 5/4 between Q.A1 and Q.E "E"
 B: circle rad m4_xyU at 5/4 between Q.A1 and Q.B "B"
 C: circle rad m4_xyU at 5/4 between Q.A1 and Q.C "C"
 ]')

#                               Interior circuits
 line from P6.w left 2*g; ground
 line from P5.w left 4*g; dot
 { C504: capacitor(down_ 4*g,C); Llabel(C504,,.22); ground(,T) }
 D504: diode(left_ 5*g); Rlabel(,D504); dot
 { C505: capacitor(down_ to (Here,C504.end),C+L)
   Rlabel(C505,100,75 V); ground(,T) }
 line right_ to (Here,P7); dot
 { D503: reversed(`diode',to (D504.start,Here)); Llabel(,D503); line to P7.w }
 d3 = lin_leng(I3)
 spline <-> from C504.start+(g/2,0) \
   up d3/4 right g/4 then up d3*2/4 left g/2 then up d3/4 right g/4
 box invis fill_(1) ht g wid 4*g "100 VAC" at last spline+(-g,0)

 down_
 Q503: hbi_tr(,R,P) with .E at (C505,P3)
   line from Q503.C.e to (P25,Q503.C) then to P25.n
   line from Q503.B.s to (Q503.B.x,Q503.E.y-4*g)
 R513: resistor(down_ 5*g)
   {"R513" ljust "1500" ljust at last [].e}; ground(,T)
   line from P19.e to (BW-(2*g,0),P19) then up Q503.E.y-P19.y+2*g
 R511: resistor(right_ 5*g); Llabel(,R511); Rlabel(,470);
   line to (Q503.E,Here) then to Q503.E.n
   line from P20.e to (BW,P20) then up R513.end.y-P20.y
   resistor(up_ lin_leng(R513))
   {"R512" ljust "5600" ljust "1 W" ljust at last [].e}
   line to (Here,Q503.B) then to Q503.B.w
   "Q503" "S2091 HI TEMP" "CONTROL" at Q503.E+(1.5,4)*g
 D505: reversed(`diode',right_ from Q503.E.e to (C504,Q503.E)); Llabel(,D505)
   line to P3.w

 line from P4.w left_ 2*g then up P3.y-P4.y; dot
 line from D503.end to (R513,D503); dot
 { Pad(8) at (Here,Board.n) }
 { line to P8.s }
 R505: resistor(down_ to (Here,P6)); Llabel(,"R505" ljust "12 K"); dot
 { C503: capacitor(down_ to (Here,C505.end),C+L)
   Rlabel(C503,100,70 V); ground(,T) }
 right_
 Q502: hbi_tr(,R) with .B at (R511.start,Here)
   line from Q502.C.e to R505.start
   line from Q502.B.e to R505.end
 R504: resistor(down_ from Q502.B.s to (Q502.B,C505.end))
   {"R504" ljust "51 K" ljust at last [].e}; ground(,T)
   "Q502" "TA7311" "REGULATOR" "CONTROL" at Q502.C+(-1,3)*g

 Pad(9) at (Q502.E,Board.n)
   line from Q502.E.n to P9.s
 Pad(10) at (Q502.B-(9,0)*g,Board.n)
 R502: resistor(left_ from Q502.E.w to (P10,Q502.E))
   Rlabel(,R502); Llabel(,150); dot

 Pad(11) at (Board.w,Q502.E)
 Pad(14) at P11+(0,2.5)*g
 Pad(12) at P11+(0,-2.5)*g
 Pad(13) at P12+(0,-2.5)*g
   line right 2*g from P13.e then up P11.y-P13.y; dot
   line from P12.e to (Here,P12); dot
 Pad(15) at P13+(0,-3)*g

 right_
 Q501: hbi_tr(,R) with .B at P9.n+(0,2*g)
   line from Q501.B.s to P9.n
   line from Q501.C.e to (P8,Q501.C) then to P8.n
   line from Q501.E.w to (P10,Q501.E) then to P10.n
   "Q501" "2N3055" "REGULATOR" at Q501.n+(0,2)*g
   line from P14.e to (P10,P14); dot

 Pad(17) at (Board.w,R511)
 Pad(16) at P17+(0,3*g)
 Pad(18) at P17+(0,-3*g)
   line right 2*g from P18.e then up P17.y-P18.y; dot

 right_
 Q504: hbi_tr(,R) with .C at (P10,P17)
   line from P17.e to Q504.E.w
   line from Q504.B.s to (Q504.B,R513.start)
 R508:resistor(down_ to (Here,R513.end))
  {"R508" ljust "680" ljust at last [].e}; ground(,T)
   dot(at (P10,P15))
   { line to P10.s }
   { resistor(down_ 5*g); {"225" ljust "10 W" ljust "5 %" ljust at last [].e}
   line to Q504.C.n }
 R503:resistor(left_ 10*g); Rlabel(,R503); Llabel(,290 10 W 5%); dot
   line to (Here,Q504.B)
   resistor(right_ to Q504.B.w); Llabel(,R507); Rlabel(,100)
   line from P15.e to R503.end
   "Q504" "40409" "REGULATOR" at Q504.C+(3.5,3)*g
   resistor(left_ from R502.end to (R503.end,P11))
   Rlabel(,R501); Llabel(,390 5W 5%); line to P11.e

   resistor(right_ from P16.e to (R514.end,P16)); Llabel(,R506); Rlabel(,82)
   line down P16.y-P17.y; dot

   dot(at (R514.end,P11))
 C501: capacitor(down_ 6*g,C+)
   Llabel(C501); {"100" ljust "30 V" ljust at last [].s +(0,-g)}
   ground(,T)
   dot(at (Here.x+4*g,P11.y))
 ZD501: reversed(`diode',down_ lin_leng(C501),Z); Llabel(ZD501); ground(,T)

   dot(at (R514.end,P15))
 C502: capacitor(down_ 6*g,C+)
   Llabel(C502); {"100" ljust "30 V" ljust at last [].s +(0,-g)}
   ground(,T)
   dot(at (Here.x+4*g,P15.y))
 ZD502: reversed(`diode',down_ lin_leng(C502),Z); Llabel(ZD502); ground(,T)

   line from (C502,P17) to (C502,R508.start+(0,g))
 C506: capacitor(down_ to (Here,R508.end),C+)
   Llabel(C506); {"100" ljust "30 V" ljust at last [].s +(0,-g)}
   ground(,T)

#                               Left-side boxes
 boxwid = 10*g
 boxht = 5*g
 line left 3*g from P22.w "GRY" above
 line left 3*g from P19.w "VIOL" above
 box with .e at (Here,0.5 between P19 and P22) "TO SIGNAL" "METER CIRCUIT"

 line left 8*g from P21.w "RED TO C508" above
 line left 8*g from P20.w "VIOL" above

 line left 3*g from P17.w "RED" above
 line left 3*g from P18.w; {"WHT-" ljust "RED" ljust at Here+(0,g) }
 box with .e at (Here,0.5 between P17 and P18) "12.7 V SOURCE" "TO MULTIPLEX"

 line left 3*g from P16.w "WHT" above
 box with .se at Here+(0,-g) "12 V SOURCE" "TO FM TUNER" "SOURCE SWITCH"

 line left 3*g from P15.w "ORG" above
 box ht 3*g with .e at Here "15 V SOURCE" "TO FM TUNER"

 line left 3*g from P13.w "BLU" above
 line left 3*g from P12.w; {"WHT-" ljust "RED" ljust at Here+(0,g) }
 line left 3*g from P11.w "RED" above
 box ht 6*g with .e at (Here,P12) "27 V SOURCE" "TO CONTROL" "PREAMP AND" \
  "PWR AMPLIFIER"

 line left 3*g from P14.w
  {"WHT-" ljust "GRY-" ljust "GRN" ljust at Here+(0,1.5*g) }
 box with .se at Here+(0,-g) "50 V SOURCE" "TO PHONO" "PREAMP"

command "</g>" # end font
PE