.PS
# Heathkit.m4
cct_init
#                               Landscape
maxpswid = 11
maxpsht = 8.5

#                               Set small text size: tikz-pgf changes
#                               text offset for globally-defined tiny font
#                               so we define tsf() to set size locally
  iflatex(`ifpsfrag(`define(`tsf',"`$1'") dnl
                     textht = 7.5bp__; textoffset = 0.5bp__',
                    `define(`tsf',`"\tiny\sf `$1'"')')',
          `define(`tsf',"`$1'")')

#                               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
  box invis fill_(1) wid picwid ht picht with .sw at (0,0)
  ifdpic(`linethick_(0.4)',`linethick_(0)')
  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(tsf(%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(tsf(%g),i) at (0, i*g) rjust }
  linethick_(0.8)

ifdpic(`
  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 { contline down picht/5 then right picwid/5 }
  contline right 2*g then up 2*g
  contline up picht-2*g then up g then left g ')

#                               Place the bottom inductor on the grid
  L1: inductor(down_ 13*g from (80*g,22*g),,13,,g)
  L2: inductor(down_ 10*g from L1.start+(0,21*g),,10,,g)
  L3: inductor(down_ 10*g from L2.start+(0,12*g),,10,M,g)
    line from M4Core1.end to (M4Core1,L1.end)
    line from M4Core2.end to (M4Core2,L1.end)
  Scrn: 2 between M4Core1.start and M4Core2.start
    line dashed from Scrn to (Scrn,L1.end)
    ground
  L4: inductor(up_ 5*g from (Scrn.x+M4Core1.x-L2.c.x,L2.start.y-2*g),,5,,g)
  L5: inductor(up_ 5*g from (L4,L2.end+(0,g)),,5,,g)

#                               Circuit board
  Board: box dashed thick 2 wid 58*g ht 55*g with .se at L1.end+(-7*g,-2*g)
  P: box invis wid 12*g ht 4*g with .s at Board.sw+(26*g,0)
  { tsf(POWER SUPPLY) ljust tsf(CIRCUIT BOARD) ljust at P.w+(g,0) }
  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) tsf($1) }
#                               Board connections on the right
  Pad(1) at (Board.e,L1.end)
    line from P1.e to L1.end tsf(RED) above
  Pad(2) at (Board.e,L1.start)
    line from P2.e to L1.start tsf(RED) above
  Pad(3) at (Board.e,L2.end)
    GRN1: line left 4*g from L2.start tsf(GRN) above ; ground
    GRN2: line from P3.e to L2.end tsf(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 tsf(6 VAC) at L2.c-(2*g,0)
  Pad(4) at P3-(0,3*g)
    line right_ 3*g from P4.e tsf(BRN) above
    arrow down_ 2*g ht arrowht*2/3
    tsf(TO DIAL) tsf(LAMPS) at Here+(0,-g)below
  Pad(5) at (Board.e,L3.end)
    line from P5.e to L3.end tsf(BLU) above
  Pad(7) at (Board.e,L3.start)
    line from P7.e to L3.start tsf(BLU) above
  Pad(6) at 0.5 between P5 and P7
    line from P6.e to L3.c tsf(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 L4.end to (int(L4.end.x/g+8)*g,L4.end.y) tsf(BLK) below ; dot
    b = lin_leng(BLK)
  BLKYEL: line from L4.start right_ b tsf(BLK-YEL) above ; dot
  BLKGRN: line from L5.end right_ b tsf(BLK-GRN) below ; dot
  BLKRED: line from L5.start right_ b tsf(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)
    rlabel(,tsf(3 A FUSE) rjust tsf(SLOW BLOW))
    line to (Here.x,int(Here.y/g)*g-g); dot
  Sckt1: socket at Here+(5*g,0)
    line from Sckt1.w to (PL,Sckt1); A: dot; tsf(A) at last [].w rjust
    line from Sckt1.e right_ lin_leng(last line); B: dot
      tsf(B) at last [].e 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.c
  T1: F.c+(-q,w/2+g/2)
  T2: F.c+( q,w/2+g/2)
    line from T1 to (T1,F.c)-(0,2*g)
    line from T2 to (T2,F.c)-(0,2*g) ]')

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

define(`pwrswitch',`[ right; circlerad = 1.75*g/2
  C1: circle tsf(1)
  C4: circle tsf(4)
  C2: circle tsf(2) with .n at C1.s+(0,-C1.rad)
  C5: circle tsf(5)
  C3: circle tsf(3) with .n at C2.s+(0,-C1.rad)
  C6: circle tsf(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)
    tsf(POWER) at Psw.w+(-2*g,0) rjust
    arrow up Psw.ht/2 at Psw.e+(1.5*g,0)
    tsf(ON) above; tsf(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); contline to (Here,PP.T1) then to PP.T1
    line from PP.T2 to (B,PP.T2) then to (B,L4.end) then to L4.end
    line from BLKGRN.end to (B,BLKGRN); dot

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

  Pad(24) at P25+(-4*g,0)
    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(,tsf(R514))
    rlabel(,tsf(680 k))
    dot; { ground }
    line to (P23,Here) then to P23.n

#                               Diode bridge
  BE: dot(at (P24,L1.c))
    d1h = lin_leng(L1)/2
    diode(left_ d1h up_ d1h); rlabel(,,tsf(D508))
  BN: dot
    diode(left_ d1h down_ d1h); rlabel(tsf(D506))
  BW: dot
    diode(from BE left_ d1h down_ d1h); llabel(,,tsf(D509))
  BS: dot
    diode(left_ d1h up_ d1h); llabel(tsf(D507))
    capacitor(down_ from BN to BS,C); llabel(tsf(C507),,tsf(.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 tsf(57) tsf(VAC) at last spline.c

#                               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 tsf(E)
  B: circle rad m4_xyU at 5/4 between Q.A1 and Q.B tsf(B)
  C: circle rad m4_xyU at 5/4 between Q.A1 and Q.C tsf(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(tsf(C504),,tsf(.22)); ground(,T) }
  D504: diode(left_ 5*g); rlabel(,tsf(D504)); dot
  { C505: capacitor(down_ to (Here,C504.end),C+L)
    rlabel(tsf(C505),tsf(100),tsf(75 V)); ground(,T) }
  line right_ to (Here,P7); dot
  { D503: reversed(`diode',to (D504.start,Here)); llabel(,tsf(D503))
  line to P7.w }
  d3 = lin_leng(L3)
  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 tsf(100 VAC) at last spline.c+(-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); llabel(,tsf(R513) ljust tsf(1500)); 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(,tsf(R511)); rlabel(,tsf(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))
    rlabel(,tsf(R512) ljust tsf(5600) ljust tsf(1 W))
    line to (Here,Q503.B) then to Q503.B.w
    tsf(Q503) tsf(S2091 HI TEMP) tsf(CONTROL) at Q503.E+(1.5*g,4*g)
  D505: reversed(`diode',right_ from Q503.E.e to (C504,Q503.E)); llabel(,tsf(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(,tsf(R505) ljust tsf(12 k)); dot
  { C503: capacitor(down_ to (Here,C505.end),C+L)
    rlabel(,tsf(C503) rjust tsf(100) rjust tsf(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))
    rlabel(,tsf(R504) rjust tsf(51 k)); ground(,T)
    tsf(Q502) tsf(TA7311) tsf(REGULATOR) tsf(CONTROL) at Q502.C+(-1*g,3.5*g)

  Pad(9) at (Q502.E,Board.n)
    line from Q502.E.n to P9.s
  Pad(10) at (Q502.B-(9*g,0),Board.n)
  R502: resistor(left_ from Q502.E.w to (P10,Q502.E))
    rlabel(,tsf(R502)); llabel(,tsf(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
    tsf(Q501) tsf(2N3055) tsf(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))
  llabel(,tsf(R508) ljust tsf(680)); ground(,T)
    dot(at (P10,P15))
  { line to P10.s }
  { resistor(down_ 5*g)
    llabel(,
     tsf(R510) ljust tsf(225) ljust tsf(10 W) ljust tsf(5 \%))
    line to Q504.C.n }
  R503:resistor(left_ 10*g); rlabel(,tsf(R503))
  { tsf(290) tsf(10 W 5 \%) at last [].s+(0,-1.3*g) }
    dot
    line to (Here,Q504.B)
    resistor(right_ to Q504.B.w); llabel(,tsf(R507)); rlabel(,tsf(100))
    line from P15.e to R503.end
    tsf(Q504) tsf(40409) tsf(REGULATOR) at Q504.n+(-2*g,3*g)
    resistor(left_ from R502.end to (R503.end,P11)); rlabel(,tsf(R501))
    {tsf(390) tsf(5 W 5 \%) at last [].s+(0,-1.3*g)}
    line to P11.e

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

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

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

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

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

  line left 8*g from P21.w tsf(RED TO C508) above
  line left 8*g from P20.w tsf(VIOL) above

  line left 3*g from P17.w tsf(RED) above
  line left 3*g from P18.w tsf(WHT-) tsf(RED) above
  box with .e at (Here,0.5 between P17 and P18) \
    tsf(\shortstack[l]{12.7 V SOURCE\\ TO MULTIPLEX})

  line left 3*g from P16.w tsf(WHT) above
  box with .se at Here+(0,-g) \
    tsf(\shortstack[l]{12 V SOURCE\\ TO FM TUNER\\ SOURCE SWITCH})

  line left 3*g from P15.w tsf(ORG) above
  box ht 3*g with .e at Here \
    tsf(\shortstack[l]{15 V SOURCE\\ TO FM TUNER})

  line left 3*g from P13.w tsf(BLU) above
  line left 3*g from P12.w tsf( WHT-) tsf(RED)
  line left 3*g from P11.w tsf(RED) above
  box ht 6*g with .e at (Here,P12) \
    tsf(\shortstack[l]{27 V SOURCE\\ TO CONTROL\\ PREAMP AND\\ PWR\
     AMPLIFIER})

  line left 3*g from P14.w
  { tsf(WHT-) tsf(GRY-) tsf(GRN) at last line.c+(0,2*g) }
  box with .se at Here+(0,-g) \
    tsf(\shortstack[l]{50 V SOURCE\\ TO PHONO\\ PREAMP})

.PE
