%! % Name of file: hack68 pulse monitor (C:\\windows\\desktop\\gonzo\\gonzo.ps) run % use external gonzo gonzo begin ps.util.1 begin printerror nuisance begin /green {0.33 settint} def /red {0 settint} def systemdict /setstrokeadjust known {true setstrokeadjust} if /mastergray {0.96} def % sets overall light grade shade %%%%%%%%%%%%%%%%% % Here's some needed routines not yet in GUTILITY.PTL or GONZO13A.PTL %............... % roundbox draws a box path with rounded corners and locks you to the % lower lefthand box corner using this format ... % -xpos- -ypos- -yheight- -cornerrad- roundbox /roundbox {gsave /rad exch def /bt exch def /br exch def /bb exch def /bl exch def bl bb translate rad mark br 2 div 0 0 0 0 bt br bt br 0 br 2 div 0] roundpath} def % vrule gives a fixed vertical rule, inputting xpos ystart yend linewidth /vrule {gsave newpath setlinewidth 2 index 4 2 roll moveto exch lineto 0 setgray stroke grestore} def % hrule gives a fixed horizontal rule, inputting ypos xstart xend linewidth /hrule {gsave newpath setlinewidth 1 index 4 2 roll moveto lineto 0 setgray stroke grestore} def % mergestr is a tool useful for page numbers; evenutally it will go % into the nuisance dictionary /mergestr {2 copy length exch length add string dup dup 4 3 roll 4 index length exch putinterval 3 1 roll exch 0 exch putinterval} def % this is a repeat of the GONZO13B callout width proc ... gonzo begin /endtheline {/curwide txtwide roomleft sub def justx cvx exec oktoprint {printline} if} bind def /cw {save /snapc1 exch def /oktoadvance false def /oktoprint false def /linestring linestring2 def /justx (justL) def 3 1 roll /ypos exch def /xpos exch def stringgonzo curwide snapc1 restore} def end gonzo begin % This is the core keystone code routine. It works by taking an average % of the first two and last two string lengths to determine the keystone % slope, increment, and starting width. It then checks the length of % each line and extends the starting width as needed so everything fits. /keyproc {/kadj exch def /msg exch def /yy1 exch def /xx1 exch def mark {msg (\n) search {exch pop exch /msg exch def dup length 0 le {pop} if}{dup length 0 le {pop} if exit} ifelse} loop ] /karray exch def 0 0 karray 0 get cw 0 0 karray 1 get cw add 2 div dup 0 0 karray dup length 1 sub get cw 0 0 karray dup length 2 sub get cw add 2 div sub neg karray length 1 sub div dup /kinc exch def 2 div sub /kstart exch def /txtwide 10000 def 0 0 1 karray length 1 sub {/kpn exch def 0 0 karray kpn get cw kstart kinc kpn mul add sub 2 copy lt {exch} if pop} for kstart add 1.01 mul dup /kstart exch def /txtwide exch def /justifylastline true def 0 1 karray length 1 sub { /posn exch def yy1 xx1 kstart kadj exch posn karray exch get cf /txtwide txtwide kinc add def /xx1 xx1 kinc kadj def /yy1 yy1 yinc sub def} for} def % these are the three keystone routines. Use xpos ypos true (msg strings) % cck, etc. true for keystone; false for ordinary justify. /cck {save /keysnap exch def exch {{2 div sub} keyproc} {cc} ifelse keysnap restore} def % callout centered keystone /clk {save /keysnap exch def exch {{pop} keyproc} {cl} ifelse keysnap restore} def % callout left keystone /crk {save /keysnap exch def exch {{sub} keyproc} {cr} ifelse keysnap restore} def % callout right keystone end % close gonzo dictionary %%%%%% doembeddedproc executes |/name installdoembeddedproc links it /doembeddedproc {mark 50 {stringmode {getstringchar}{currentfile read} ifelse not {exit} if dup dup dup 32 eq exch 13 eq or exch 10 eq or {pop exit} if} repeat counttomark dup string /pstr1 exch def 1 sub -1 0 {pstr1 3 1 roll exch put} for pstr1 exch pop cvx exec} def /installdoembeddedproc {gonzo begin commands (/) 0 get {doembeddedproc} put end} def installdoembeddedproc %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % HACK III TEMPLATE % This default gonzo page making template is a useful starting point for % creating your own custom templates. It allows multiple page documents % with full picture insertions and total text control. % Note that any template MUST have an internal proc named templatestartup % and that your template MUST NOT call gonzofont before run time. 300 dict /muse3 exch def muse3 begin /templatefonts { % Remember: all fonts MUST defer till run time! /font0 /Times-Bold [54 0 0 54.1 0 -32] gonzofont /font1 /Times-Roman [9.75 0 0 9.75 0 0] gonzofont /font2 /Times-Italic [9.75 0 0 9.75 0 0] gonzofont /font3 /Times-Bold [9.75 0 0 9.77 0 -6] gonzofont /font4 /Times-Roman [9 0 0 9 0 0] gonzofont /font5 /Times-Italic [9 0 0 9 0 0] gonzofont /font6 /Times-Bold [9 0 0 9 0 0] gonzofont /font7 /Helvetica [9 0 0 9 0 0] gonzofont /font8 /Helvetica [8 0 0 8 0 0] gonzofont /font9 /Helvetica-Bold [9 0 0 9.1 0 4] gonzofont /font- /ZapfDingbats [9 0 0 9 0 0] gonzofont /font= /Symbol [9 0 0 9.1 0 -0.5] gonzofont } def % normallisting is used by the GURU figures for long text ... /normallisting { /txtwide bw 10 sub def /ybot -99999 def /font0 /Helvetica-Bold 12 gonzofont /font1 /Helvetica 8.5 gonzofont /font2 /Helvetica-Oblique 8.5 gonzofont /font3 /Helvetica-Bold 8.5 gonzofont /font4 /Courier 8.5 gonzofont /ypos bt 20 sub def /xpos bl 20 add def /yinc 10 def /pmnorm 60 def /amacro {(Lhy) stringmacro} def /bmacro {(1py) stringmacro} def /cmacro {(3z) stringmacro} def} def % denselisting is used by GURU figures for tighter text /denselisting{/bc br bl sub 2 div bl add def /txtwide bw 10 sub def /ybot -99999 def /font0 /Helvetica-Bold 10 gonzofont /font1 /Helvetica 7 gonzofont /font2 /Helvetica-Oblique 7 gonzofont /font3 /Helvetica-Bold 7 gonzofont /font4 /Courier 7 gonzofont /ypos bt 10 sub def /xpos bl 6 add def /yinc 8 def /amacro {(hy) stringmacro} def /emacro {/yparendadj yinc 2 div def} def} def % values used by gonzo justify ... /cstretch 0.1 def % minimum character kerning /sstretch -0.2 def % minimum space kerning /dropcount 4 def % number of lines drop cap drops /lastlinestretch 0.06 def % open last paragraph line slightly /pm 10 def % use paragraph indents /yinc 10.5 def % line spacing /ypara 0 def % extra interparagraph spacing /pagenum 1 def % These macros handle an initial drop cap and low center subheads ... /amacro {(zyL0) stringmacro /ypos ypos ypara add def} def % start drop cap /bmacro {(iFy1) stringmacro /ypos ypos ypara add def} def % finish drop cap /cmacro {staytint1 (znyC3) stringmacro /ypos ypos ypara 2 mul add def} def % centered title /dmacro {black (pF1) stringmacro /ypos ypos ypara 2 mul add def} def % normal text after centered title % reference values for internal doc control that become calculated % array values. Note that it is best to work in fixed yinc heights % to prevent alignment problems under figures. Note that it is nearly % always best to AVOID FIXED VALUES IN DOCMATRIX. /txw 155 def % width of normal text columns /cmb 60 def % column bottom position /cmt cmb 60 yinc mul add def % page is 60 normal text lines high /cml 60 def % first column left margin /cms 170 def % spacing of normal columns /cm# 3 def % number of normal columns /cm1 cml def % c1 starts at left margin /cm2 cml cms add def % c2 in middle /cm3 cml cms 2 mul add def % c3 to right /cmw cms txw sub def % white space between columns /hdw cms 2 mul txw add def % normal header/footer width /hdc cm1 hdw 2 div add def % normal header/footer center /hdr cm1 hdw add def % normal header/footer right /hdl cm1 def % normal header left /fdp 14 def % amount of footer drop below cml /bh1 yinc 6 mul def % 8 vlines reserved for title & blurb /stdfigrad 0.1 def % radius of standard figure box /1colwide txw def % width of single column figure /2colwide txw cms add def % width of double column figure /3colwide txw cms 2 mul add def % width of triple column figure /f1h yinc 22 mul def % height of figure one /f2h yinc 22 mul def % height of figure two /f3h yinc 34 mul def % height of figure three /f4h yinc 32 mul def % height of figure four /f5h yinc 36 mul def % height of figure five /s1h yinc 31 mul def % height of sidebar /s2h yinc 27 mul def % height of sidebar /a1h yinc 66 mul def % height of synergetics ad /h1h yinc 14 mul def % height of optional help box /tfa {yinc 1.5 mul add} def % upper figure position adjust % warning: second true must stay that way; must use blank namek /fig1 {cm2 cmb 3 sub 2colwide f1h true true /f1name /figure1 stdmusefig} def % link /fig2 {cm1 cmt f2h sub yinc add 3 add 2colwide f2h true true /f2name /figure2 graymusefig} def % link /fig3 {cm1 cmb 1 add 2colwide f3h true true /f3name /figure3 stdmusefig} def % link /fig4 {cm1 cmt f4h sub yinc add 3 add 3colwide f4h true true /f4name /figure4 stdmusefig} def % link /fig5 {cm1 cmt f5h sub yinc add 3 add 1colwide f5h true true /f5name /figure5 graymusefig} def % link /fig6 {cm2 cmb 3 sub yinc add 4 add 2colwide f6h true true /f5name /figure6 stdmusefig} def % link /ad1 {cm3 cmb 1colwide f5h false true /ad1name /ad1copy stdmusefig} def % link /side1 {cm1 cmt s1h sub yinc add 2colwide s1h true true /s1name /sidebar1 grayfig2} def % link % /side1 {cm2 cmt s1h sub yinc add % special for url % 2colwide s1h true true /s1name /sidebar1 grayfig2} def % link /side2 {cm1 cmt s2h sub yinc add 2colwide s2h true true /s2name /sidebar2 grayfig2} def % link /help {cm2 % cmt 16 yinc mul sub cmb 4 sub 1colwide h1h true false /helpname /hackhelp graymusefig} def % this is a "standard" figure border for HACK3. It has rounded edges, % a bottom single line title, and links to the actual figure art... /narrowfig 0 def % narrowing option /stdmusefig { /jsave justx 4 get def save /stdsnap exch def grayfig {0 3 translate} if % shift /colcheck {} def /figproc exch def cvx /figname exch def /showtitle exch def /showborder exch def /figheight exch def narrowfig sub /figwidth exch def -10 add translate /linestring linestring2 def /pmrun 0 def /txtwide figwidth 2 sub def /font1 /Helvetica 9 gonzofont /yinc 10 def /oktoprint false def /oktoadvance true def /xpos 0 def /ypos 0 def figname stringgonzo /titadjust ypos neg def /oktoprint true def /bw figwidth def /bt figheight def /bl 0 def /bb 0 def /bc figwidth 2 div def /xpos 20 def /ypos bt 20 sub def showtitle {0 narrowfig 2 div add titadjust figname cf} if showtitle not {/titadjust 0 def} if % no suppression if no title showborder {1 narrowfig 2 div add titadjust 12 add figwidth 2 sub figheight titadjust sub 10 sub stdfigrad roundbox 0.5 setlinewidth grayfig {gsave % LaserWriterG {0.90}{0.95}ifelse setgray grayshade setgray fill grestore [2.5 0 1.5 1] superstroke } {stroke} ifelse} if /linestring linestring2 def % needed to run interference /cstretch 0.01 def /sstretch 0.01 def /pmrun 0 def /colcheck {} def 3 1 roll translate dup scale % adjust figure position mark figproc cvx exec cleartomark stdsnap restore justx 4 jsave put } def /grayfig false def % show stdmusefig with gray background default /graymusefig {/grayfig true def stdmusefig /grayfig false def} def %%%% % has a title box /grayfig2rad 0.01 def /showboxgrays true def /grayfig2 { /jsave justx 4 get def save /stdsnap exch def /colcheck {} def /figproc exch def cvx /figname exch def /showtitle exch def /showborder exch def /figheight exch def /figwidth exch def translate showborder {1 2 figwidth 2 sub figheight 5 sub grayfig2rad roundbox 0.4 figheight 28 sub moveto figwidth 1.8 sub 0 rlineto gsave showboxgrays {mastergray setgray}{1 setgray} ifelse fill grestore gsave newpath 0 figheight 5 sub moveto figwidth 1.8 sub 0 rlineto 0 -23 rlineto figwidth 1.8 sub neg 0 rlineto closepath grayshade dup 1 ne {0.15 sub pop 0.33} if setgray fill grestore [2 0 1 1] superstroke } if /font7 /Helvetica-Bold 9 1 add gonzofont showtitle {black white % 0.25 setgray figwidth 2 div figheight 20 sub 0.5 sub font7 figname cc black} if /bw figwidth def /bt figheight def /bl 0 def /bb 0 def /bc figwidth 2 div def /xpos 20 def /ypos bt 20 sub def /cstretch 0 def /sstretch 0 def /lastlinestretch 0 def /pmrun 0 def /ypara 0 def /linestring linestring2 def 3 1 roll translate dup dup /csf exch def scale mark figproc cvx exec cleartomark stdsnap restore justx 4 jsave put } def %%% % Here is the master document control matrix. It is manual in this example % Note that the result of internal calcs are ORDINARY NUMBERS. Note also % that you make room for figures by adding or subtracting only where and % as needed. /docmatrix [ [ { } { } {/narrowfig 0 store } ] % initial document files [ [{titleblock} % xpos ypos scale name {rightfooter} {/narrowfig 0 store 0 0 0.9 fig1} ] % page one figures and control [ cm1 cmt bh1 sub cmb {txw}] % column1 xpos ypos ylimit txtwide [ cm2 cmt bh1 sub cmb f1h add {txw} ] % column2 [ cm3 cmt bh1 sub cmb f1h add {txw} ] % column3 ] [ [{beige leftfooter} {leftheader} {/narrowfig 0 store} {0 0 0.9 fig2} % {/narrowfig 0 store} {0 0 0.9 fig3 aqua} ] % page two figures and control [ cm1 cmt f2h sub cmb f3h add {txw}] % column1 xpos ypos ylimit txtwide [ cm2 cmt f2h sub cmb f3h add {txw}] % column2 xpos ypos ylimit txtwide [ cm3 cmt cmb {txw} ] % column3 xpos ypos ylimit txtwide ] [ [ {beige rightfooter} {rightheader} % {/narrowfig 80 store} % {0 0 0.9 fig3} {/narrowfig 0 store} { 0 0 0.9 fig4 aqua} % {/narrowfig 0 store} % {12 -20 0.9 fig5} ] % page three figures and control [ cm1 cmt f4h sub cmb {txw}] % column1 ship [ cm2 cmt f4h sub cmb {txw}] % [ cm3 cmt f4h sub cmb {txw} ] % ] [ [{beige leftfooter} {leftheader} {/namestretch 0 def} {15 0 0.85 side1} {0 -6 1 help } % temp help box ] % page four figures and control % [ cm1 cmt s1h sub cmb {txw}] % special yinc no caption [ cm1 cmt s1h sub cmb {txw}] % for two wide url only [ cm2 cmt s1h sub cmb h1h add {txw}] [ cm3 cmt cmb {txw}] ] [ [{beige rightfooter} {rightheader} % {0 31 21 add 1 ad1} {0 -75 1 ad1} % special for hack 68??? {/namestretch 0 def} {15 0 0.85 side2} ] % page five figures and control [ cm1 cmt s2h sub cmb txw] % column1 xpos ypos ylimit txtwide [ cm2 cmt s2h sub cmb txw] % column2 xpos ypos ylimit txtwide % [ cm3 cmt cmb txw] % column3 xpos ypos ylimit txtwide ] /adj {23 yinc mul add } def [ [{leftfooter} {leftheader} % {-5 -35 1 fig4} % {/namestretch 0.4 def} % {14 0 0.85 side2} % {18 -24 0.9 fig4} % {4 -17 0.9 fig5} ] % page six figures and control [ cm1 cmt cmb adj txw] % column1 xpos ypos ylimit txtwide [ cm2 cmt cmb adj txw] [ cm3 cmt cmb txw] ] % change [ {quit} ] to [ {exitproc} ] [[{}] [cm1 cmt cmb txw]] % possible blank page ? [[{}] [cm2 cmt cmb txw]] % possible blank page ? [[{}] [cm3 cmt cmb txw]] % possible blank page ? % leave [ {quit} ] at end of page setup file [ {exitproc} ] % final document wrapup % NOTE: will not execute with short copy! ] def /nextpage { showpage adjustpage /pagenum pagenum 1 add def docpage numpages lt { /docpage docpage 1 add def docmatrix docpage get /curpage exch def curpage length 1 sub /numpgcol exch def curpage 0 get {cvx exec} forall /curcol 1 def nextcol} {docmatrix curpage 1 add get {cvx exec} forall } ifelse } def % modified nextcol allows pages without text and deferred xpos calcs. /nextcol { numpgcol 0 gt { curpage curcol get aload pop exec /txtwide exch def exec /ylimit exch def exec /ypos exch def exec /xpos exch def /curcol curcol 1 add def}{ nextpage} ifelse} def /colcheck { ypos ylimit 1 sub le { curcol numpgcol gt {nextpage} {nextcol} ifelse} if } def /templatestartup { templatefonts font1 /gonzojust true def /rslashok true def docmatrix length /numpages exch def /docpage 1 def docmatrix 0 get {cvx exec} forall % do initial document files docmatrix docpage get /curpage exch def curpage length 1 sub /numpgcol exch def curpage 0 get {cvx exec} forall % do initial page files /curcol 1 def nextcol } def % titleblock, headers and footers /titleblock {save /blurbsnap exch def /colcheck {} def /cstretch 0.2 def sstretch 1 def cml cmt bh1 sub 15 add translate /blurbboxwide 180 def /blurbboxhigh 80 def 1 setlinecap bestgray 3 23 mt hdw 15 sub blurbboxwide sub 3 sub 23 lineto hdw 3 sub 23 moveto -10 0 rlineto [6 0.3 4.5 .85] superstroke % changed to brown hdw blurbboxwide sub 15 sub 0 blurbboxwide blurbboxhigh 5 roundbox gsave grayshade setgray fill grestore % temp expt [4 0.3 2.5 .85] superstroke 0.85 setgray 4.5 setlinewidth -5 23 mt 3 r blurbboxwide 1 add 23 mt 3 r stroke grestore 0.3 setgray /font0 /Palatino-Bold 30 gonzofont /font1 /Palatino-Bold 10 gonzofont 0.2 setgray /font2 /Palatino-Bold 12 gonzofont font2 4 62 7 add author cl font0 3 34 4 add titlename cl font2 4 7 titledate cl 0.15 setgray /yinc 12 def hdw font1 105 sub 60 dokeystone titleblurb cck blurbsnap restore} def /leftheader {save /blurbsnap exch def /colcheck {} def cml cmt 16 add translate gsave mastergray setgray 0 8 mt 16 setlinewidth hdw r grestore % color fill? 0 0 hdw 1.2 hrule 0 16 hdw 0.5 hrule /cstretch 0.2 def /sstretch 1 def /font2 /Palatino-Bold 11 gonzofont 0 4.5 leftheading cl blurbsnap restore} def /rightheader {save /blurbsnap exch def /colcheck {} def cml cmt 16 add translate gsave mastergray setgray 0 8 mt 16 setlinewidth hdw r grestore % color fill? 0 0 hdw 1.2 hrule 0 16 hdw 0.5 hrule /cstretch 0.2 def /sstretch 1 def /font2 /Palatino-Bold 11 gonzofont hdw 4.5 rightheading cr blurbsnap restore} def /leftfooter { save /blurbsnap exch def /colcheck {} def cml cmb 13 sub translate /txtwide 1000 store /font3 /Helvetica 4.5 gonzofont font3 hdw -6 (Copyright c 1999 by Don Lancaster and Synergetics (520) 428-4073 www.tinaja.com \ All commercial rights and all electronic media rights fully reserved. Reposting expressly forbidden.) cr 0 0 hdw 0.8 hrule gsave 25 0 translate -18 -7 36 14 2 roundbox gsave mastergray setgray fill grestore 0.5 setlinewidth stroke /font2 /Palatino-Bold 11 gonzofont /cstretch 0.4 def 16 2 add 0.2 setgray 3.5 columnum ( ) cvs (.) mergestr colpagenum ( ) cvs mergestr cc blurbsnap restore /colpagenum colpagenum 1 add def } def % adjusted for 100 - was -16 -7 32 14 /rightfooter {save /blurbsnap exch def /colcheck {} def cml cmb 13 sub translate /txtwide 1000 store /font3 /Helvetica 4.5 gonzofont font3 0 -6 (Copyright c 1999 by Don Lancaster and Synergetics (520) 428-4073 www.tinaja.com \ All commercial rights and all electronic media rights fully reserved. Reposting expressly forbidden.) cl 0 0 hdw 0.8 hrule gsave hdw 25 sub 0 translate -18 -7 36 14 2 roundbox gsave mastergray setgray fill grestore 0.5 setlinewidth stroke /cstretch 0.4 def /font2 /Palatino-Bold 11 gonzofont 16 2 add 3.5 0.2 setgray columnum ( ) cvs (.) mergestr colpagenum ( ) cvs mergestr cc blurbsnap restore /colpagenum colpagenum 1 add def} def end % guru3 template %% TEMP BYPASSES %%% /adjustpage {} def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % INCLUDED FILES AND PROCS /dokeystone false def /titleblurb (Pulse monitor interface New|k wireless|k comm|k mag An update on free energy Aerobic exercise software Thermoelectric |jguidelines )def /author (Don Lancaster's) def /titlename (Hard|kware Hack|ker) def /titledate (September, 1993) def /leftheading (Hardware Hacker) def /rightheading titledate def /columnum 68 def /colpagenum 1 def %%%%%%%%%%%%% COMMON HEADER %%%%%%%%%%%%%%%%% % graybox utilities /grayfill {gsave bl bb translate /doublestroke true def 0 0 moveto 0 bh lineto bw bh lineto bw 0 lineto closepath mastergray setgray fill grestore} def /whitebox {gsave /wh exch def /ww exch def translate 0 0 mt 0 wh rlineto ww 0 rlineto 0 wh neg rlineto closepath gsave white fill grestore line1 stroke} def % keeps state! /doublestroke true def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % /grayshade 0.92 def /grayshade1 {grayshade} def /setgray1 { dup grayshade 1 eq { 0.5 gt {pop 1}{pop 0} ifelse } {pop} ifelse setgray } def /usecolor true def % special for figure /grayfig1 0.92 def /figure1 { % name of textfile: hack.fig.68.2 TE module rules % ............................ save /snap1 exch def %%%%%%%%%%%%%%%%%%%% electronics begin reprogray /tabs [-1.2 0] def /bigdot {gsave translate 1.5 dup scale 0 0 mt dot grestore} def bl 20 add bb -30 add 10 setgrid % 32 22 showgrid line2 1 setlinecap % 0.95 setgray grayshade 0.15 sub setgray1 8 5 mt 8 17 lineto 8.5 17 lineto 26 5.5 lineto 26 5 lineto closepath fill 0 setgray staytint1 8.5 17 mt 26 5.5 lineto stroke 8.5 17 bigdot 17.25 11.25 bigdot 26 5.5 bigdot 8 4.5 mt 13 u 7.5 5 mt 19 r 8 11.25 mt 0.5 l 8 17 mt 0.5 l 17.25 5 mt 0.5 d 26 5 mt 0.5 d black /cstretch 0.02 def /sstretch 0.02 def /font1 /Helvetica 0.85 gonzofont /font2 /Helvetica 0.75 gonzofont /font3 /Helvetica-Bold 0.75 gonzofont font1 /kern 0.1 def 8 3.7 (0) cc 17.25 3.7 (25) cc 26 3.7 (50) cc 17 2.2 (Temperature differential in degrees C) cc 7 4.7 (0) cr 7 10.95 (10) cr 7 16.7 (20) cr 3.9 11.95 (Heat pumped in|j|j watts) cc font2 /sx 7.7 def /sy -5 def /kern 0.08 def 9.5 19 (20 watts of heat across 0 degrees. Efficiency is |/tinton1 |3L|kOW|1.) cl 9.5 sx add 19 sy add (10 watts of heat across 25 degrees. Efficiency is |/tinton1 |3VERY L|kOW|1.) cl 9.5 sx 2 mul add 19 sy 2 mul add (0 watts of heat across 50 degrees. Efficiency is |/tinton1 |3ZERO|1.) cl ypos snap1 restore /ypos exch def } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /figure2 { % name of textfile: hack.fig.68.2 TE module rules % ............................ save /snap2 exch def 8 -32 translate %%%%%%%%%%%%%%%%%%%% electronics begin /tabs [-1.2 0] def bl 5 add bb 5 add 10 setgrid % 20 20 showgrid /cstretch 0.02 def /sstretch 0.02 def /font1 /Helvetica 0.85 gonzofont /font2 /Helvetica-Oblique 0.85 gonzofont /txtwide 28 def font1 staytint1 3 19.5 (|t1. |tThe area to be cooled |2must|1 be superinsulated. All avoidable sources of heat gain |2must|1 be carefully excluded. |h |t2. |tRealistic heat flux calculations and heatsink thermal impedance calculations |2must|1 be carefully made ahead of time. |h |t3. |tCurrent thermoelectric modules are an inappropriate solution if more than twelve watts of actual cooling are called for. |h |t4. |tThe rise of the module hot side temperature above ambient |2must|1 be kept as low as possible. This rise must |2never|1 exceed a small fraction of the total temperature drop desired. |h |t5. |tVery large and extremely high quality heatsinking is a must. Use forced air cooling at the very least. Pumped water cooling may be required to achieve an acceptable efficiency. |h |t6. |tPower sources |2must|1 have very low ripple and hum, since the ripple peaks heat much worse than the troughs cool. |h |t7. |tSurfaces contacting the module |2must|1 be ultra-flat. 100% contact is essential. Thermal grease |2must|1 always be used. ) cl ypos snap2 restore /ypos exch def } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /figure3 { % name of textfile: hack.fig.67.1 nonlinear mappings % ............................ save /snap3 exch def 14 -48 translate %%%%%%%%%%%%%%%%%%%% electronics begin % An improved graygrid routine that works BOTH at 300 and 600 DPI... /ggray {60 0 {sub abs 0.21 lt {1}{0} ifelse} setscreen gsave 0 60 0 {pop pop 1 add 1} setscreen grestore dup 25 eq {pop 0.8}{100 eq {0.72}{0.765} ifelse} ifelse setgray} def bl 5 add bb 5 add 10 setgrid % 32 34 showgrid /sampspercycle 72 2 div def /dampercycle .002 2 mul def /cyclesperblock 0.0745 1.414 mul def % huh /totalcycles 40 def /maxheight 2 def /dampsine {gsave translate 1 setlinecap 1 setlinejoin line1 0 0 moveto 2 r 2 0 moveto /runht maxheight def 0 1 totalcycles sampspercycle mul cvi { /curpos exch def curpos sampspercycle div 360 mul dup /curang exch def sin runht mul curpos cyclesperblock mul cyclesperblock mul 2 add exch lineto /runht runht curang 90 div floor /curquartercycle exch def % want nothing on first pass also backwards... curquartercycle 0 eq curquartercycle 20 eq or curquartercycle 40 eq or curquartercycle 60 eq or curquartercycle 80 eq or curquartercycle 100 eq or {1 dampercycle 19.1 mul 1.02 mul add mul % 0 2 rlineto 0 -2 rlineto } {1 dampercycle sub mul} ifelse curquartercycle 120 gt {/runht runht 1 dampercycle 3 mul sub mul } if def } for gsave closepath grayshade setgray1 fill grestore stroke grestore } def /impulses {gsave translate 0 0 mt 2 pr 6 {3.5 pu 0.2 pr 3.5 pd 1.8 pr} repeat 4 pr gsave closepath grayshade 0.15 sub setgray1 fill grestore stroke grestore} def /box35t {save line1 /boxsnap exch def /yinc 0.8 def font2 /msg exch def /posn exch def translate 0 0 mt 3 pu 5 pr 3 pd closepath gsave grayshade 0.15 sub setgray1 fill grestore line1 stroke 2.5 posn msg cc boxsnap restore } def /cstretch 0.02 def /sstretch 0.02 def /font2 /Helvetica 0.7 gonzofont /font1 /Helvetica 0.85 gonzofont font1 line1 tinton 7 4.5 staytint dampsine 7 13 impulses black /pad {gsave translate 1 setlinecap -0.4 0 mt 0.8 pr [.7 0 0.5 0.75] superstroke grestore} def line1 10 27.5 mt 18 r 2.5 d 17.25 l 2.5 d 9 r 15.5 27.5 mt rarrow 22 27.5 mt rarrow 12.25 22.5 mt rarrow 18.75 22.5 mt rarrow 5 25 mt 3.25 u 4 r rarrow 7.5 25 mt 1.75 u 1.5 r rarrow 5 25 pad 7.5 25 pad /yinc 0.8 def font2 6.25 23.5 (Conductive pickup pads) cc 9 26 2.1 (Bandpass differential amplifier) box35t 15.5 26 2.1 (Automatic gain control) box35t 22 26 1.7 (Level detector) box35t 12.25 21 1.7 (Impulse generator) box35t 18.75 21 2.1 (Ferrite loop antenna) box35t font1 3 10 ((C) To produce this transmitted waveform\274) cl font1 3 18 ((B) Generates this burst of six micropower impulses\274) cl font1 3 30.6 ((A) This approximate block diagram\274) cl ypos snap3 restore /ypos exch def } def %%%% /figure4 { % name of textfile: hack.fig.68.4 Aerobic PS software % ............................ save /snap1 exch def %%%%%%%%%%%%%%%%%%%% electronics begin 30 -24 translate %%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%% % Here is the actual gonzo code used... % guru % turn on the gonzo utilities % landscape reprogray % An improved graygrid routine that works BOTH at 300 and 600 DPI... /ggray {60 0 {sub abs 0.21 lt {1}{0} ifelse} setscreen gsave 0 60 0 {pop pop 1 add 1} setscreen grestore dup 25 eq {pop 0.8}{100 eq {0.72}{0.765} ifelse} ifelse setgray} def %%%%%% modified showgrid for web /ggray { staytint1 grayshade setgray1 } def /showgrid {gsave ggray /vblocks exch def /hblocks exch def thingridlines setlinewidth [{0 0 moveto 0 vblocks rlineto stroke} 1 hblocks 1 add] xrpt [{0 0 moveto hblocks 0 rlineto stroke} 1 vblocks 1 add] yrpt fatterborder { gsave newpath 0 0.96 blocksize div dtransform round idtransform setlinewidth pop 2 setlinecap 0 0 moveto hblocks 0 rlineto 0 vblocks rlineto hblocks neg 0 rlineto closepath stroke grestore} if fat5 { gsave grayshade 0.07 sub setgray1 newpath 0 0.48 blocksize div dtransform round idtransform setlinewidth pop mark {5 0 moveto 0 vblocks rlineto stroke} 5 hblocks 5 div cvi] xrpt mark {0 5 moveto hblocks 0 rlineto stroke} 5 vblocks 5 div cvi] yrpt grestore} if fatter10 { gsave grayshade 0.15 sub setgray1 newpath 0 0.96 blocksize div dtransform round idtransform setlinewidth pop mark {10 0 moveto 0 vblocks rlineto stroke} 10 hblocks 10 div cvi] xrpt mark {0 10 moveto hblocks 0 rlineto stroke} 10 vblocks 10 div cvi] yrpt grestore} if grestore} def %%%%%%%%% bl 65 add bb 116 add 7 setgrid 50 30 showgrid /m {moveto} def %%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%% % This portion of the file is changed on a daily basis, filling in the % data from the cassette recorder... /june22data { /who (Marvin Griblinski) def /date (Tuesday, June 22, 1993) def /route (Whitlock loop) def /distance 7.4 def /maxspeed 14.5 def /avgspeed 11.0 def /odometer 1145 def /restingpulse 74 def /standingpulse 86 def /e+0 110 def /e+10 111 def /e+20 107 def /e+40 104 def /e+100 97 def /comments (Good day. Mild winds. Loose gravel improving.) def /curdata [ 0 11 108 5 12 106 10 11.5 105 15 11.5 107 20 13.5 109 25 11.5 112 30 10.5 114 35 12 113 40 10.5 116 % 45 11.5 118 % 50 10.5 118 % 55 11 119 % 60 11.5 118 ] def } def %%%%%%%% Thus endeth the portion to be changed daily %%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%% % These are the plotting routines... /plotit { red staytint1 %%%%%%%%%%%%% speed curdata 0 get curdata 1 get 2 mul moveto gsave currentpoint translate 1.4 dup scale 0 0 0.33 setgray1 mdot grestore 1 1 curdata length 3 div 1 sub cvi {/posn exch def curdata posn 3 mul get curdata posn 3 mul 1 add get 2 mul 0.33 setgray1 lineto gsave currentpoint translate 1.4 dup scale 0 0 mdot grestore } for red 0.33 setgray1 stroke %%%%%%%%%%% pulse curdata 0 get curdata 2 get 5 div 10 sub moveto gsave currentpoint translate 1.4 dup scale 0 0 mdot grestore 1 1 curdata length 3 div 1 sub cvi {/posn exch def 0.33 setgray curdata posn 3 mul get curdata posn 3 mul 2 add get 5 div 10 sub lineto gsave currentpoint translate 1.4 dup scale 0 0 0.33 setgray mdot grestore } for stroke afterplot } def /afterplot { beige staytint1 curdata dup length 3 sub get 0.8 add dup curdata dup length 2 sub get 2 mul 0.3 sub (speed) cl curdata dup length 1 sub get 5 div 10 sub 0.3 sub (pulse) cl black font2 0 -7 who cl 0 -8 date cl 0 -10 (Route: ) route mergestr cl 0 -11 (Distance: ) distance ( ) cvs ( miles.) mergestr mergestr cl 0 -12 (Maximum speed: ) maxspeed ( ) cvs ( mph.) mergestr mergestr cl 0 -13 (Average speed: ) avgspeed ( ) cvs ( mph.) mergestr mergestr cl 0 -14 (Miles to date: ) odometer ( ) cvs mergestr cl 17 -14 (Comments: ) comments mergestr cl 17 -7 (Previous resting pulse: ) restingpulse ( ) cvs mergestr cl 17 -8 (Previous standing pulse: ) standingpulse ( ) cvs mergestr cl 36 -7 (Recovery pulse at 0 seconds: ) e+0 ( ) cvs mergestr cl 36 -8 (Recovery pulse at 20 seconds: ) e+20 ( ) cvs mergestr cl 36 -9 (Recovery pulse at 40 seconds: ) e+40 ( ) cvs mergestr cl 36 -10 (Recovery pulse at 100 seconds: ) e+100 ( ) cvs mergestr cl } def beige staytint 0.33 setgray1 1 setlinecap line2 0 -.5 mt 31 u -.5 0 mt 51 r 50 -.5 mt 31 u [{0 0 mt 0.5 l} 10 4] yrpt [{50 0 mt 0.5 r} 5 6] yrpt [{0 0 mt 0.5 d} 10 6] xrpt /cstretch 0.02 def /sstretch 0.02 def /font2 /Helvetica 0.85 gonzofont /font3 /Helvetica-Bold 1 gonzofont /font1 /Helvetica-Bold 1.2 gonzofont font1 0 -2 (0) cc 10 -2 (10) cc 20 -2 (20) cc 30 -2 (30) cc 40 -2 (40) cc 50 -2 (50) cc 25 -4.5 (EXCERCISE TIME IN MINUTES) cc gsave 0 -0.4 translate 52 0 (50) cc 52 5 (75) cc 52 10 (100) cc 52 15 (125) cc 52 20 (150) cc 52 25 (175) cc -2 0 (0) cc -2 10 (5) cc -2 20 (10) cc -2 30 (15) cc grestore font1 /yinc 1.5 def 55 18.5 (P U L S E R A T E )cc -4.5 24 (B I C Y C L E S P E E D) cc 45 10 mt 5 pu 4 pr 5 pd 4 pl gsave lime 0.85 setgray fill grestore newpath line1 45 10 mt 4 r 45 15 mt 4 r beige /yinc 1.2 def font3 green staytint1 47 12.7 (target zone) cc beige staytint1 june22data plotit ypos snap1 restore /ypos exch def } def %%%%%% /figure5 { % name of textfile: muse.fig.116.5 HTML error codes NOT IN USE % ............................ save /snap5 exch def %%%%%%%%%%%%%%%%%%% electronics begin end ypos snap5 restore /ypos exch def } def %%%%%% /namestretch 0 def /sidebar1 { 8 -3 translate 1 dup scale % adjust to fit /title( )def /font0 /Helvetica [10 0 0 8.5 0 0] gonzofont /font1 /Helvetica [9 0 0 9 0 0] gonzofont /font2 /Helvetica-Bold [9 0 0 9 0 0 ] gonzofont /txtwide 156 def /yinc 11 def % RSNUMBER /Zmacro {gsave /Helvetica-Narrow-Bold findfont [7.5 0 0 7.5 0 0] makefont setfont xpos ypos moveto charstretch 0(CIRCLE ) ashow charstretch 0 RSnumber( ) cvs ashow ( ON FREE INFORMATION CARD) show /RSnumber RSnumber 1 add def /ypos ypos yinc 0.7 mul sub def grestore} def /Ymacro {/ypos ypos yinc 0.7 mul sub def} def % temporary stretch /Zmacro {(h) stringmacro /ypos ypos namestretch sub def } def /ypos0 bt 3 sub def /yinc 17 def /xpos bl def /xpos0 xpos def /pm 0 def /sstretch 0.1 def /cstretch 0.2 def /ypos bt 20 sub def /ypos 400 def /txtwide bw def /colcheck {} def /ytopoflist bt 50 sub csf div def xpos txtwide 2 div add 0 add ytopoflist 18 add % Set name below!!!! ( ) cc % for gray2 /ypos ytopoflist def /columnspacing 158 def /yinc 10 def /xpos0 bl 35 add def /xpos xpos0 def /amacro {/yhold ypos def /ypos ytopoflist def /xpos xpos columnspacing add def /ypos ypos yinc add def} def % temporary for 4 wide % /columnspacing 132 def % xpos 18 sub ypos % (|L|2AMX|1 % 11995 Forestgate Dr % Dallas TX 75243 % (800) 222-0193 % |Z xpos 18 sub ypos (|L|2ACT USA|1 Box 5490 Evanston, IL 60204 (708) 491-9628 |Z |2Bicycling Magazine|1 33 East Minor Street Emmaus, PA 18098 (215) 967-5171 |Z |2Creative Health Prods|1 5148 Saddle Ridge Road Plymouth, MI 48170 (800) 742-4478 |Z |2Dialog|1 3460 Hillview Avenue Palo Alto, CA 94304 (415) 858-2700 |Z |2Medical Electronic Prods|1 2994 W Liberty Avenue Pittsburgh, PA 15216 (412) 343-9666 |Z |2Medical Equipment Designer|1 29100 Aurora Road #200 Solon, OH 44139 (216) 248-1125 |Z |2Polar|1 99 Seaview Blvd Port Washington, NY 11050 (516) 484-2400 |Z |a |2Precise International|1 15 Corporate Drive Orangeburg, NY 10969 (914) 365-3500 |Z |2Pulse Stick II/Claggk Inc|1 PO Box 4099 Farmingdale, NY 11735 (516) 293-3751 |Z |2RacerMate, Inc|1 3016 NE Blakeley Street Seattle, WA 98105 (800) 522-3610 |Z |2REI|1 1700 45th Street East Sumner, WA 98352 (800) 426-4840 |Z |2Synapse Enterprises|1 Box 35311 Canton, OH 44735 (216) 455-1162 |Z |2Trek|1 801 W Madison Street Waterloo, WI 53594 (800) 879-8735 |Z |2Vetta/Orleander USA|1 14553 Delano St, Ste 210 Van Nuys, CA 91411 (818) 780-8808 ) cl } def % /sidebar1 {} def % temp lockout %%%% /sidebar2 { 8 -3 translate 1 dup scale % adjust to fit /title ( ) def /font0 /Helvetica [10 0 0 8.5 0 0] gonzofont /font1 /Helvetica [9 0 0 9 0 0] gonzofont /font2 /Helvetica-Bold [9 0 0 9 0 0 ] gonzofont /txtwide 156 def /yinc 11 def /Ymacro {/ypos ypos yinc 0.7 mul sub def} def /Zmacro {(h) stringmacro} def /ypos0 bt 3 sub def /yinc 17 def /xpos bl def /xpos0 xpos def /pm 0 def /sstretch 0.1 def /cstretch 0.2 def /ypos bt 20 sub def /txtwide bw def /colcheck {} def /ytopoflist bt 50 sub csf div def xpos txtwide 2 div add 0 add ytopoflist 18 add % (|2|CNAMES AND NUMBERS) cc ( ) cc % for new graybox /ypos ytopoflist def /columnspacing 158 def /yinc 10 def /xpos0 bl 35 add def /xpos xpos0 def /amacro {/yhold ypos def /ypos ytopoflist def /xpos xpos columnspacing add def /ypos ypos yinc add def} def /downtwo {/ypos ypos 2 sub def} def % temporary stretch /Zmacro {(h) stringmacro /ypos ypos namestretch sub def } def % temporary for 4 wide % /columnspacing 140 def % /xpos xpos 15 sub def xpos ypos (|L|2Antique Radio Labs|1 Rt 1, Box 41 Cutler, IN 46920 (317) 268-2214 |Z |2Exair|1 1250 Century Circle North Cincinnati, OH 45246 (513) 671-3322 |Z |2HVAC Product News|1 1350 East Touhy Avenue Des Plaines, IL 60018 (708) 635-8800 |Z |2Intl Assn New Science|1 1304 S College Avenue Fort Collins, CO 80524 (303) 482-3731 |Z |2Melcor|1 1040 Spruce Street Trenton, NJ 08648 (609) 393-4178 |Z |2Mondo-tronics|1 524 San Anselmo #107 San Anselmo, CA 94960 (415) 455-9330 |Z |a |2Oughtred Society|1 8338 Colombard Court San Jose, CA 95135 (408) 238-8082 |Z |2Resources UN-LTD|1 8030 South Willow Street Manchester, NH 03103 (603) 668-2499 |Z |/surl |2Synergetics|1|/synlib01 PO Box 809 Thatcher, AZ 85552 (602) 428-4073 |Z |2TriQuint Semi|1 3625A SW Murray Blvd Beaverton, OR 97005 (503) 644-3535 |Z |2Vortec|1 10125 Carver Road Cincinnati, OH 45242 (800) 441-7475 |Z |2Wireless Design & Dev|1 Box 650 Morris Plains, NJ 07950 (201) 292-5100 ) cl } def % temphelp /hackhelp { % nt: hack.help % .. /sstretch 0 def /cstretch 0.1 def /font0 /Helvetica-Bold [8.5 0 0 8 0 0] gonzofont /font1 /Helvetica [8.5 0 0 8 0 0] gonzofont /font2 /Helvetica-Bold [8.5 0 0 8 0 0 ] gonzofont /font7 /Helvetica-Oblique [8.5 0 0 8 0 0] gonzofont /yinc 9.5 def /font2 {font1} def bc bt 15 sub (|0NEED HELP?) cc bl 14 add bt 30 sub (|1Phone or write all your US |2Tech Musings|1 questions to: |h Don Lancaster |/surl |2Synergetics|1|/synlib01 Box 809-EN Thatcher, AZ, 85552 (520) 428-4073 |h US email:|j |7don@tinaja.com|1 Web page:|j|j |7www.tinaja.com|1 ) cl } def %%% /f1name (Fig. 1 \261 HEAT PUMPING CURVE for a larger thermoelectric module. Note that the efficiency goes down as the temperature differential increases.) def /f2name (Fig. 2 \261 USE THESE GUIDELINES for all of your thermoelectric module designs. Otherwise, you are likely to end up heating instead of cooling!) def /f3name (Fig. 3 \261 THE MYSTERY WAVEFORMS inside a typical "chest type" pulse monitor revealed. The transmitted signal approximates a 36 cycle burst of 5 kilohertz sinewaves. One burst per pulse event. What you \ really have here is plain old inductive coupling using an air core transformer.) def /f4name (Fig. 4 \261 AEROBIC EXERCISE RECORD written in PostScript. Editible source code is in |/surl HACK68.PSL|/sourcecode ) def /f5name (Fig. 5 \261 THE CLASSIC NEON LAMP relaxation oscillator. The lamp flashes several times a second. Some EDM circuits use a much faster and far more \ powerful version of this circuit, substituting the tool spark gap for the neon gas breakdown.) def /ad1name ( ) def % dummy /s1name (SOME PULSE MONITOR RESOURCES) def /s2name (NAMES AND NUMBERS) def /helpname (TEMPCHECK) def /Zmacro {/ypos ypos 1 add def 0 setlinewidth xpos ypos moveto txtwide 0 rlineto stroke /ypos ypos -2 add def} def % hair rule /reprogray {bestgray} def bestgray black /header {} def /setstrokeadjust where {pop /setstrokeadjust true def} if muse3 begin /cstretch 0.2 def /sstretch -0.3 def /showthegrid false def /LaserWriterG false def /boxdraw {bl bb bw bh brad roundbox blw setlinewidth stroke grestore } def /br {bl bw add} def /bb 0 def % picojust patch18 gonzo begin /swallow {/lopspaces lopspaces 1 add def printlist plistlength 1 sub get dup 1 get dup 2 ge {1 sub} if 1 exch put} bind def end /rdiode {gsave 180 rotate diode grestore} def % patch /grayshade 0.92 def % for compatibility /showcolors false def % temp for figure one cieF % BBBBBB % name of textfile: muse.116.z % .... % X E % Z %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % This is needed to improve post picojustufication... gonzo begin /swallow {/lopspaces lopspaces 1 add def printlist plistlength 1 sub get dup 1 get dup 2 ge {1 sub} if 1 exch put} bind def end /wanttousepicojustify true def % this globally turns picojust on or off %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wanttousepicojustify false 40 array dictstack {/^picoset known or} forall not and { % FILL JUSTIFICATION IMPROVER version 6.3 June 3, 1994. c 1994 by % Don Lancaster & Synergetics (602) 428-4073. [support on GEnie PSRT] % Personal use premitted; All commercial & media rights fully reserved. % Install this where it will redefine all print time uses of % the -awidthshow- operator. Use picojust true or false to control. /picoflag true def % selective availability switch /picofract 0.35 def % percentage of excess space to be internalized /picothresh 0.03 def % percentage increment per font change /^picoset true def % job multiple def lockout /picojust {/picoflag exch store} def % use for local turn on or off /awidthshow {1 index 4 index 6 index add add 32 eq not picoflag not or {//awidthshow}{/^msg exch store pop /^cst exch store pop pop /^sst exch store /^cct ^msg length store /^rwd ^msg stringwidth pop store /^sct 0 ^msg {( ) search {pop pop exch 1 add exch}{pop exit} ifelse} loop store /^jwd ^cct ^cst mul ^sct ^sst mul add store /^saj ^jwd dup ^rwd add dup 0 eq {pop 0.0001} if div picothresh div floor picothresh mul picofract 1.33 mul mul 1 add store gsave ^saj 1 scale /^rft 1 ^saj 1 sub ^rwd mul ^jwd dup 0 eq {pop 0.0001} if div sub ^saj div store ^sst ^rft mul 0 32 ^cst ^rft mul 0 ^msg //awidthshow 1 ^saj div 1 scale grestore ^jwd ^rwd add 0 rmoveto} ifelse} bind def } if %%%%%%%%%%%%% SYNERGETICS AD %%%%%%%%%%%%%%%%%% %! %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /ad1copy { save /adsave exch store green staytint % IMPORTANT: Comment or remove the next line to get the ad up to EN page size! % Do this **ONLY** if you are extracting the ad for EN layout! % 1.03 1.09 scale xpos 23 sub ypos 283 sub 10 sub translate 0.95 0.915 scale %%%% This code puts in the reader service number %%%% /showreaderservicenumber true def % now a catalog /readerservicenumber 146 def /squashad true def /showadgrays true def squashad {1 0.80 scale} if /height 693 114 add 60 add def % stretched twice /width1 165 def /bc width1 2 div def % huh /sidethk 4 def /botheight 54 def /topheight 33 def /outrad 10 def /inrad 5 def /pm 0 def /pmnorm 0 def %%%%%%%%%%%%%% KEYSTONE STUFF %%%%%%%%%%%%%%%%%%%%%%% % this is a repeat of the GONZO13B callout width proc ... gonzo begin /endtheline {/curwide txtwide roomleft sub def justx cvx exec oktoprint {printline} if} bind def /cw {save /snapc1 exch def /oktoadvance false def /oktoprint false def /linestring linestring2 def /justx (justL) def 3 1 roll /ypos exch def /xpos exch def stringgonzo curwide snapc1 restore} def end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % This is a subtle correction to the gonzo fill justify that makes % txtwide slightly more precise ... gonzo begin /reallyjustF {swallowandhang roomleft cstretch add numchars 1 sub numspaces spacecharratio mul add dup 0 eq {pop 0.001} if div dup cstretch add /cfix exch def spacecharratio mul sstretch add /sfix exch def /xfix 0 def /yfix 0 def} bind def % unconditional justF end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % KEYSTONE STUFF STARTS HERE gonzo begin % This is the core keystone code routine. It works by taking an average % of the first two and last two string lengths to determine the keystone % slope, increment, and starting width. It then checks the length of % each line and extends the starting width as needed so everything fits. /keyproc {/kadj exch def /msg2 exch def /yy1 exch def /xx1 exch def mark {msg2 (\n) search {exch pop exch /msg2 exch def dup length 0 le {pop} if}{dup length 0 le {pop} if exit} ifelse} loop ] /karray exch def 0 0 karray 0 get cw 0 0 karray 1 get cw add 2 div dup 0 0 karray dup length 1 sub get cw 0 0 karray dup length 2 sub get cw add 2 div sub neg karray length 1 sub div dup /kinc exch def 2 div sub /kstart exch def /txtwide 10000 def 0 0 1 karray length 1 sub {/kpn exch def 0 0 karray kpn get cw kstart kinc kpn mul add sub 2 copy lt {exch} if pop} for kstart add 1.01 mul dup /kstart exch def /txtwide exch def /justifylastline true def 0 1 karray length 1 sub { /posn exch def yy1 xx1 kstart kadj exch posn karray exch get cf /txtwide txtwide kinc add def /xx1 xx1 kinc kadj def /yy1 yy1 yinc sub def} for} def % these are the three keystone routines. Use xpos ypos true (msg strings) % cck, etc. true for keystone; false for ordinary justify. /cck {save /keysnap exch def exch {{2 div sub} keyproc} {cc} ifelse keysnap restore} def % callout centered keystone /clk {save /keysnap exch def exch {{pop} keyproc} {cl} ifelse keysnap restore} def % callout left keystone /crk {save /keysnap exch def exch {{sub} keyproc} {cr} ifelse keysnap restore} def % callout right keystone end % close gonzo dictionary %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % outside box 0 0 width1 height 5 roundbox showadgrays {0.3}{0} ifelse setgray1 % for brown border fill % inside box sidethk botheight width1 sidethk 2 mul sub height topheight sub botheight sub inrad roundbox showadgrays {0.96 setgray}{white} ifelse fill black % shade for web /cstretch 0.7 def /sstretch 1.2 def /font1 /Revue 10 gonzofont /font3 /Revue 9 gonzofont /font4 /Revue [9 0 0 9.05 0 1] gonzofont /font9 /Helvetica-Bold 6.5 gonzofont /font2 /Revue 14 gonzofont font1 % adjust center /bc bc sidethk 2 div add def % top lettering white bc bt 22 add (|1new from) cc bc bt 6 add (|2DON LANCASTER) cc bc -17 (|2SYNERGETICS) cc /yinc 10 def bc -28 (|3B|1ox |3809-EN|1 |1Thatcher, |3AZ 85552 |4(|3520|4)|3 428-4073|1) cc /cstretch 0.1 def /sstretch 0.1 def /font5 /Helvetica-Narrow 8 gonzofont /font6 /Helvetica-Narrow-Bold 10 gonzofont /font7 /Helvetica 6 gonzofont /font8 /Helvetica-Narrow-Bold 8 gonzofont /font: /Helvetica-Bold [5 0 0 4.95 0 6] gonzofont % uneven for distillery /font- /Helvetica-Narrow-Oblique 8 gonzofont black 3 3 (|7FREE US VOICE HELPLINE) cl br 3 sub 3 (|7VISA|j/|jMC) cr /xpos 4 def /txtwide br 8 sub def /yinc 8.5 def /ypos bt 15.5 sub def /amacro {/ypos ypos 2 add def} def /cmacro {/ypos ypos 1 add def} def /kern 0.5 def /bw width1 sidethk 2 mul sub def % obtuse code avoids the arcto bug /bmacro { gsave showadgrays {0.3}{0} ifelse setgray % for brown border 0 ypos translate 0 0 mt 5 [-0.5 30 -0.5 3 bw 1 add 3 bw 1 add 30 ] roundpath 0 -31 rlineto bw 1 add neg 0 rlineto closepath fill newpath 0 0 mt 5 [-0.5 -30 -0.5 -3 bw 1 add -3 bw 1 add -30 ] roundpath 0 31 rlineto bw 1 add neg 0 rlineto closepath fill grestore } def /Umacro {ypos} def xpos ypos (|C|6A|kCTIVE|j|j FILTER|j|j COOKBOOK |h|a |C|6RESEARCH|j|j INFOPACKS |h|F|a |5Don's instant use other oneash-and-carry flat rate consulting. Ask any reasonable technical \ question to get a detailed analysis and report. See |/tinton www.tinaja.com/info01|/info01 \ for specifics. \ |8$79.00|5 |b |a |h |F|5The sixteenth|k (!|j)|k printing of Don's bible on analog op-amp lowpass, bandpass, and highpass active filters. De-mystified instant designs. |8 $28.50|1 |b |a |h |C|6CMOS|j|j AND|j|j TTL|j|j COOKBOOKS |h|a |F|5Millions of copies in print worldwide. |8THE|5 two books for digital integrated circuit fundamentals. About as hands-on as you can get. |8$28.50 |5each.|1 |b |a |h |C|6INCREDIBLE|j|j SECRET |h|c MONEY|j|j MACHINE|j|j II |5|h|F|a Updated 2nd edition of Don's classic on setting up your own technical or craft venture. |8$18.50|1 |b |a |h |C|6LANCASTER|j|j CLASSICS|j|j LIBRARY |5|h|a|F Don's best early stuff at a bargain price. Includes the CMOS Cookbook, The TTL Cookbook, Active Filter Cookbook, PostScript video, Case Against Patents, Incredible Secret Money Machine II, and \ Hardware \ Hacker II reprints. |8$119.50|1 |b |a |h |C|6L|kOTS|j|j OF|j|j OTHER|j|j GOODIES |5|h|a) stringgonzo %%%%%%%%%%%%%%%%%%%%%%%% % (A) WIDTH CALCULATIONS 2.20.91 % A new curwide variable lets you calculate the gonzo string % width independent of printing it. Handy for menu justify, etc.. % Use has to be bracketed with /oktoprint false def /oktoadvance % false def --- stuff --- and then true. Works with any justify mode. % make this change to main code so lengths can be extracted. Note that % roomleft gets flushed at line end. gonzo begin /endtheline {/curwide txtwide roomleft sub def justx cvx exec oktoprint {printline} if} bind def % calloutwidth calculates only the width of the string, returning it % to the top of the stack. For consistency with other callouts, use % 0 0 (string) cw. This INCLUDES all stretching and font changes! /cw {save /snapc1 exch def /oktoadvance false def /oktoprint false def /linestring linestring2 def /justx (justL) def 3 1 roll /ypos exch def /xpos exch def stringgonzo curwide snapc1 restore} def end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % (B) MENU JUSTIFY 2.20.91 % The cm routine takes a leading string and a trailing string seperated % by a delimiter and places a row of CONSTANT WIDTH, PRECISELY SPACED, % VERTICALLY ALIGNED and WHOLE dots (or whatever) between the two. It % is based on putting down the dots first and ERASING only whole dots % that are not wanted. /menudots (. ) def /menufont {font5} def /mdoteht 3 def /menudelim ( ) def /cropleadingspaces true def % drawmdots draws a line of menu dots, using plain old show /drawmdots { gsave menufont xxm yym moveto txtwide menudots stringwidth pop dup /mdot1 exch def div floor cvi {menudots show} repeat grestore } def % spchomp takes a string and conditionally removes all leading spaces, % returning the truncated string /spchomp {cropleadingspaces {dup 0 exch {32 eq {1 add}{exit} ifelse } forall} if exch dup length 2 index sub 3 -1 roll exch getinterval} def % mlineproc takes the mline string and processes it into a leading string, % the dot row, and a trailing string. Unused dots are erased with logic % to insure whole dots only. Null strings are ignored. /mlineproc {mline length 0 gt {drawmdots mline menudelim search {/lmstr exch def pop spchomp /rmstr exch def } if gsave showadgrays {0.96}{1}ifelse setgray % for web color xxm yym moveto mdoteht setlinewidth 0 0 lmstr cw mdot1 div ceiling mdot1 mul 0 rlineto stroke xxm txtwide mdot1 div floor mdot1 mul add yym moveto 0 0 rmstr cw mdot1 div ceiling mdot1 mul neg 0 rlineto stroke grestore xxm yym lmstr cl xxm txtwide add yym rmstr cr /yym yym yinc sub def} if} def % mj menujustify accepts tabbed string pairs and converts them into % dotted menu listings.. /cm {gsave /msg exch def /yym exch def /xxm exch def { msg (\n) search {/mline exch def pop /msg exch def mlineproc} {/mline exch def mlineproc exit } ifelse} loop grestore} def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % /txtwide 170 def % textwidth /txtwide txtwide 8 sub def /yinc 8 def xpos 4 add ypos 0 sub (Ask the Guru I or II or III $24.50 Hardware Hacker II, III or IV $24.50 Tech Musings V or VI $24.50 Micro Cookbook I $19.50 PostScript Beginner Stuff $29.50 PostScript Show and Tell $29.50 Intro to PostScript Video $29.50 PostScript Reference II $34.50 PostScript Tutorial/Cookbook $22.50 PostScript by Example $32.50 Understanding PS Programming $29.50 PostScript: A Visual Approach $22.50 PostScript Program Design $24.50 Thinking in PostScript $22.50 LaserWriter Reference $19.50 Type 1 Font Format $16.50 Acrobat Reference $24.50 Whole works (all PostScript) $380.00 Technical Insider Secrets |9|kFREE|j|j|j|5 ) cm /txtwide txtwide 8 add def xpos ypos (|F |h|c|c|c |b |a |h |C|6BOOK-ON-DEMAND|j|j PUB|j|j KIT |h|F|a |5Ongoing details on Book-on-demand publishing, a new method of producing books only when and as ordered. Reprints, sources, samples. |8$39.50|5 |b |a |h |C|6THE|j|j C|kASE|j|j A|kGAINST|j|j P|kA|kTENTS |h|F|a |5For most individuals, patents are virtually certain to result in a net loss of sanity, energy, time, and money. \ This reprint set shows you Don's tested and proven real-world alternatives. |828.50|5 |b |a |h |C|6BLATANT|j|j OPPORTUNIST|j|j I |h|F|a |5The reprints from all Don's Midnight Engineering columns. Includes a broad range of real world, proven coverage on small scale technical startup ventures. Stuff you can use right now. \ |8$24.50|5 |b |a |h |C|6RESOURCE|j|j BIN|j|j I |h|F|a |5A complete collection of all Don's Nuts & Volts columns to date, including a new index and his master names and numbers list. |8$24.50|5 |b |a |h |C|6FREE|j|j SAMPLES |h|F|a |5Check Don's Guru's Lair at |-http://www.tinaja.com|5 for interactive catalogs and online samples \ of Don's unique products. Searchable reprints and reference resouces, too. Tech help, hot links to cool sites, consultants. |jemail:|j|- don@tinaja.com|1 ) stringgonzo showreaderservicenumber { /sstretch 0.25 def /cstretch 0.20 def /font1 /Helvetica-Bold [6 0 0 8 0 0 ] gonzofont bc 0 sub botheight neg 10 sub 2 sub %(Write in ) readerservicenumber ( ) cvs mergestr %( on Reader Service Card.) mergestr cc (FREE catalog: http://www.tinaja.com) cc } if adsave restore } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /figure5xx { % name of textfile: muse.fig.106.5 induction heating schematic % ............................ % figure or text starts here ////////////////////////////////////// save /snap1 exch def %%%%%%%%%%%%%%%%%%% electronics begin end ypos snap1 restore /ypos exch def } def %%%%% MUSE PATCHES %%%%% % Version 8.0 Jan 11, 1997 % Insert just before "Name of textfile" on "Z" page. muse3 begin %%%%%%%%%%%%%%%% New colorizer patches %%%%%%%%%%%%%%%%%% /boxgrays 0.92 def /grayshade boxgrays def /mastergray boxgrays def /staytint {0.33 setgray} def /staytint1 {0.25 setgray} def /showadgrays true def /Zmacro {staytint /ypos ypos 2 add def 72 300 div setlinewidth xpos ypos moveto txtwide 0 rlineto stroke /ypos ypos -2 add def tintoff} def % hair rule /amacro {(zy0) stringmacro /ypos ypos ypara add def 0.33 setgray } def % start drop cap /bmacro {(iFy1) stringmacro /ypos ypos ypara add def black} def % finish drop cap % Gonzo character colorizer /blueon {mark /blue cvx 0.33 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def /blueoff {mark /beige cvx 0 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def /tinton {mark 0.33 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def /tinton1 {mark 0.25 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def /tintoff {mark 0 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def %%%%%%%%%%%%%% COMPACT VERSION OF COLORIZER II %%%%%%%%%%%%%%%%%%%%%% /settint {dup /currenttint exch store 5.999 mul dup floor cvi /&cbar exch store dup floor sub /&cwt exch store [ {/setgray [ /dup cvx 0.3 &cwt 0.59 mul add /ge cvx [1 /exch cvx &cwt 0.59 mul 0.30 add /sub cvx 1 &cwt sub 0.59 mul 0.11 add /div cvx /dup cvx 1 &cwt sub /mul cvx &cwt /add cvx /exch cvx ] cvx [ &cwt 0.59 mul 0.3 add /div cvx /dup cvx &cwt /mul cvx 0] cvx /ifelse cvx /setrgbcolor cvx] cvx /def cvx} {/setgray [/dup cvx 0.59 1 &cwt sub 0.3 mul add /ge cvx [1 &cwt sub 0.3 mul 0.59 add /sub cvx &cwt 0.3 mul 0.11 add /div cvx /dup cvx &cwt /mul cvx 1 &cwt sub /add cvx /exch cvx 1 /exch cvx] cvx [1 &cwt sub 0.3 mul 0.59 add /div cvx /dup cvx 1 &cwt sub /mul cvx /exch cvx 0] cvx /ifelse cvx /setrgbcolor cvx] cvx /def cvx} {/setgray [/dup cvx 0.59 &cwt 0.11 mul add /ge cvx [&cwt 0.11 mul 0.59 add /sub cvx 1 &cwt sub 0.11 mul 0.30 add /div cvx /dup cvx 1 &cwt sub /mul cvx &cwt /add cvx 1 /exch cvx] cvx [0 /exch cvx &cwt 0.11 mul 0.59 add /div cvx /dup cvx &cwt /mul cvx] cvx /ifelse cvx /setrgbcolor cvx] cvx /def cvx} {/setgray [/dup cvx 0.59 1 &cwt sub mul 0.11 add /ge cvx [1 &cwt sub 0.59 mul 0.11 add /sub cvx &cwt 0.59 mul 0.30 add /div cvx /dup cvx &cwt /mul cvx 1 &cwt sub /add cvx 1] cvx [0 /exch cvx 1 &cwt sub 0.59 mul 0.11 add /div cvx /dup cvx 1 &cwt sub /mul cvx /exch cvx] cvx /ifelse cvx /setrgbcolor cvx] cvx /def cvx} {/setgray [/dup cvx 0.11 &cwt 0.30 mul add /ge cvx[&cwt 0.30 mul 0.11 add /sub cvx 1 &cwt sub 0.30 mul 0.59 add /div cvx /dup cvx 1 &cwt sub /mul cvx &cwt /add cvx /exch cvx 1] cvx [ &cwt 0.30 mul 0.11 add /div cvx /dup cvx &cwt /mul cvx /exch cvx 0 /exch cvx ] cvx /ifelse cvx /setrgbcolor cvx ] cvx /def cvx} {/setgray [ /dup cvx 0.30 1 &cwt sub 0.11 mul add /ge cvx[ 1 /exch cvx 1 &cwt sub 0.11 mul 0.30 add /sub cvx &cwt 0.11 mul 0.59 add /div cvx /dup cvx &cwt /mul cvx 1 &cwt sub /add cvx ] cvx [ 1 &cwt sub 0.11 mul 0.30 add /div cvx /dup cvx 1 &cwt sub /mul cvx 0 /exch cvx] cvx /ifelse cvx /setrgbcolor cvx ] cvx /def cvx} ] &cbar get exec exec} bind def /beige {0.10 settint} def % examples of convenience operators /aqua {0.52 settint} def /blue {0.67 settint} def /lime {0.44 settint} def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% beige %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % //// REVISED PROC ///// electronics begin % dipdraw - draws a dip integrated circuit. (old code to be improved) % Enter with currentpoint set to pin 1 and scale % set so that 1.0 = distance between pins. Then % do a numpins-(name)-(hipins)-(lopins) dipdraw % Pin callouts preceeded by / will be complemented. % main dipdraw entry: /dipdraw { save /dipsnap exch def /hipins exch def /lopins exch def /chipname exch def /numpins exch def mark 0 0 0 0 0 0 0 0 0 0 0 0 % temp patch /howlong {numpins 2 div cvi 1 add} def /howhigh {4 numpins 36 ge {1 add} if} def /stub {howhigh 1.4 sub 2 div} def % internal service subs start here: /pinproc {numpins 2 div cvi{newpath 0 cpos 0.37 0 360 arc gsave 1 setgray fill grestore 0.067 setlinewidth stroke pin# 5 string cvs dup stringwidth pop 2 div neg cpos 0.2 sub moveto show 1 0 translate /pin# pin# dir add def} repeat } def /stretchprint { dup stringwidth pop 2 div neg exch length 1 sub stretch mul 2 div sub 0 moveto callout (/) anchorsearch true eq {currentpoint exch stretch add exch moveto pop dup /callout exch def stringwidth pop callout length 1 sub stretch mul add /barwide exch def 0.033 setlinewidth gsave currentpoint 0.55 add moveto barwide 0 rlineto stroke grestore} if stretch 0 callout ashow pop} def /pincallouts{0 vpos translate {workstring ( ) search true eq {/callout exch def pop /workstring exch def callout stretchprint 1 0 translate}{dup /callout exch def stretchprint exit } ifelse}loop} def % actual dipdraw process starts here: % ........ the outline: gsave 1 setlinecap 1 setlinejoin currentpoint translate newpath -1 howhigh 2 div 0.7 -90 90 arc 0 stub rlineto howlong 0 rlineto 0 howhigh neg rlineto howlong neg 0 rlineto closepath gsave grayshade setgray fill grestore grayshade dup 1 ne {0.33}{0} ifelse setgray 0.36 setlinewidth stroke newpath -.55 .45 0.15 0 360 arc fill black % ........ pin circles and numbers: /Helvetica-Bold findfont [0.4 0 0 0.55 0 0] makefont setfont gsave /pin# 1 def /dir 1 def /cpos 0 def pinproc grestore gsave /pin# numpins def /dir -1 def /cpos howhigh def pinproc grestore % pin callouts: /Helvetica findfont [0.35 0 0 0.6 0 0] makefont setfont /stretch 0.033 def gsave /workstring hipins def /vpos 0.6 def pincallouts grestore gsave /workstring lopins def /vpos howhigh 1.05 sub def pincallouts grestore % device number: grayshade 1 ne {0.33}{0} ifelse setgray /Helvetica-Bold findfont [1.4 0 0 1 0 0] makefont setfont /stretch 0.05 def gsave numpins 2 div 1 sub 2 div howhigh 2 div 0.33 sub translate chipname dup /callout exch def stretchprint grestore black % end cleanup: grestore grestore cleartomark dipsnap restore} def end % get out of electronics? % titleblock, headers and footers /titleblock {save /blurbsnap exch def /colcheck {} def /cstretch 0.2 def sstretch 1 def cml cmt bh1 sub 15 add translate /blurbboxwide 180 def /blurbboxhigh 80 def 1 setlinecap bestgray 3 23 mt hdw 15 sub blurbboxwide sub 3 sub 23 lineto hdw 3 sub 23 moveto -10 0 rlineto [6 0.33 4.5 .85] superstroke hdw blurbboxwide sub 15 sub 0 blurbboxwide blurbboxhigh 5 roundbox gsave grayshade setgray fill grestore % temp expt [4 0.33 2.5 .85] superstroke 0.85 setgray 4.5 setlinewidth -5 23 mt 3 r blurbboxwide 1 add 23 mt 3 r stroke grestore 0.33 setgray /font0 /Palatino-Bold 30 gonzofont /font1 /Palatino-Bold 10 gonzofont /font2 /Palatino-Bold 12 gonzofont font2 4 62 7 add author cl 0.33 setgray font0 3 34 4 add titlename cl font2 4 7 titledate cl 0.20 setgray /yinc 12 def hdw font1 105 sub 60 dokeystone titleblurb cck blurbsnap restore} def /hrule1 {gsave newpath setlinewidth 1 index 4 2 roll moveto lineto stroke grestore} def /leftheader {save /blurbsnap exch def /colcheck {} def cml cmt 16 add translate 0.25 setgray gsave mastergray setgray 0 8 mt 16 setlinewidth hdw r grestore % color fill? 0 0 hdw 1.2 hrule1 0 16 hdw 0.5 hrule1 /cstretch 0.2 def /sstretch 1 def /font2 /Palatino-Bold 11 gonzofont 8 4.5 leftheading cl blurbsnap restore} def /rightheader {save /blurbsnap exch def /colcheck {} def cml cmt 16 add translate 0.25 setgray gsave mastergray setgray 0 8 mt 16 setlinewidth hdw r grestore % color fill? 0 0 hdw 1.2 hrule1 0 16 hdw 0.5 hrule1 /cstretch 0.2 def /sstretch 1 def /font2 /Palatino-Bold 11 gonzofont hdw 8 sub 4.5 rightheading cr blurbsnap restore} def /hrule1 {gsave newpath setlinewidth 1 index 4 2 roll moveto lineto stroke grestore} def /leftfooter { save /blurbsnap exch def /colcheck {} def 0.25 setgray cml cmb 13 sub translate /txtwide 1000 store /font3 /Helvetica 4.5 gonzofont font3 hdw -6 (Copyright c 1999 by Don Lancaster and Synergetics (520) 428-4073 www.tinaja.com \ All commercial rights and all electronic media rights fully reserved. \ Reposting is expressly forbidden.) cr 0 0 hdw 0.8 hrule1 gsave 25 0 translate -18 -7 36 14 2 roundbox gsave mastergray setgray fill grestore 0.5 setlinewidth stroke /font2 /Palatino-Bold 11 gonzofont /cstretch 0.4 def 16 2 add 3.5 columnum ( ) cvs (.) mergestr colpagenum ( ) cvs mergestr cc blurbsnap restore /colpagenum colpagenum 1 add def } def % adjusted for 100 - was -16 -7 32 14 /rightfooter {save /blurbsnap exch def /colcheck {} def cml cmb 13 sub translate /txtwide 1000 store /font3 /Helvetica 4.5 gonzofont font3 0.25 setgray 0 -6 (Copyright c 1999 by Don Lancaster and Synergetics (520) 428-4073 www.tinaja.com \ All commercial rights and all electronic media rights fully reserved. \ Reposting is expressly forbidden.) cl 0 0 hdw 0.8 hrule1 gsave hdw 25 sub 0 translate -18 -7 36 14 2 roundbox gsave mastergray setgray fill grestore 0.5 setlinewidth stroke /cstretch 0.4 def /font2 /Palatino-Bold 11 gonzofont 16 2 add 3.5 columnum ( ) cvs (.) mergestr colpagenum ( ) cvs mergestr cc blurbsnap restore /colpagenum colpagenum 1 add def} def /hackhelp { % nt: hack.help % .. /sstretch 0 def /cstretch 0.1 def /font0 /Helvetica-Bold [8.5 0 0 8 0 0] gonzofont /font1 /Helvetica [8.5 0 0 8 0 0] gonzofont /font2 /Helvetica-Bold [8.5 0 0 8 0 0 ] gonzofont /font7 /Helvetica-Oblique [8.5 0 0 8 0 0] gonzofont /yinc 9.5 def /font2 {font1} def 0 grayshade 1 ne {pop 0.25} if setgray bc bt 15 sub (|0NEED HELP?) cc bl 14 add bt 30 sub (|1Phone or write all your US |2Tech Musings|1 questions to: |h Don Lancaster |/surl |2Synergetics|1|/synlib01 Box 809-EN Thatcher, AZ, 85552 (520) 428-4073 |h US email:|j |7|/surl don@tinaja.com|1|/maildon Web page:|j|j |7|/surl www.tinaja.com|1|/tinaja ) cl } def /ad1 {cm3 cmb 1colwide f5h false true /ad1name /ad1copy stdmusefig} def % link /ad1name ( ) def /h1h yinc 14 mul def % height of optional help box end % muse3 template %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /showreaderservicenumber false def /showadgrays true def /ad1copy { save /adsave exch store 0 0 translate % adjusts position on page was -127 % IMPORTANT: Comment or remove the next line to get the ad up to EN page size! % Do this **ONLY** if you are extracting the ad for EN layout! % 1.03 1.09 scale green staytint xpos 23 sub ypos 283 sub 12 add translate 0.95 0.915 scale %%%% This code puts in the reader service number %%%% /readerservicenumber 146 def /squashad true def squashad {1 0.80 scale} if /height 693 114 add 60 add def % stretched twice /width1 165 def /sidethk 4 def /botheight 54 def /topheight 33 def /outrad 10 def /inrad 5 def /pm 0 def /pmnorm 0 def %%%%%%%%%%%%%% KEYSTONE STUFF %%%%%%%%%%%%%%%%%%%%%%% % this is a repeat of the GONZO13B callout width proc ... gonzo begin /endtheline {/curwide txtwide roomleft sub def justx cvx exec oktoprint {printline} if} bind def /cw {save /snapc1 exch def /oktoadvance false def /oktoprint false def /linestring linestring2 def /justx (justL) def 3 1 roll /ypos exch def /xpos exch def stringgonzo curwide snapc1 restore} def end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % This is a subtle correction to the gonzo fill justify that makes % txtwide slightly more precise ... gonzo begin /reallyjustF {swallowandhang roomleft cstretch add numchars 1 sub numspaces spacecharratio mul add dup 0 eq {pop 0.001} if div dup cstretch add /cfix exch def spacecharratio mul sstretch add /sfix exch def /xfix 0 def /yfix 0 def} bind def % unconditional justF end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % KEYSTONE STUFF STARTS HERE gonzo begin % This is the core keystone code routine. It works by taking an average % of the first two and last two string lengths to determine the keystone % slope, increment, and starting width. It then checks the length of % each line and extends the starting width as needed so everything fits. /keyproc {/kadj exch def /msg2 exch def /yy1 exch def /xx1 exch def mark {msg2 (\n) search {exch pop exch /msg2 exch def dup length 0 le {pop} if}{dup length 0 le {pop} if exit} ifelse} loop ] /karray exch def 0 0 karray 0 get cw 0 0 karray 1 get cw add 2 div dup 0 0 karray dup length 1 sub get cw 0 0 karray dup length 2 sub get cw add 2 div sub neg karray length 1 sub div dup /kinc exch def 2 div sub /kstart exch def /txtwide 10000 def 0 0 1 karray length 1 sub {/kpn exch def 0 0 karray kpn get cw kstart kinc kpn mul add sub 2 copy lt {exch} if pop} for kstart add 1.01 mul dup /kstart exch def /txtwide exch def /justifylastline true def 0 1 karray length 1 sub { /posn exch def yy1 xx1 kstart kadj exch posn karray exch get cf /txtwide txtwide kinc add def /xx1 xx1 kinc kadj def /yy1 yy1 yinc sub def} for} def % these are the three keystone routines. Use xpos ypos true (msg strings) % cck, etc. true for keystone; false for ordinary justify. /cck {save /keysnap exch def exch {{2 div sub} keyproc} {cc} ifelse keysnap restore} def % callout centered keystone /clk {save /keysnap exch def exch {{pop} keyproc} {cl} ifelse keysnap restore} def % callout left keystone /crk {save /keysnap exch def exch {{sub} keyproc} {cr} ifelse keysnap restore} def % callout right keystone end % close gonzo dictionary %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % outside box 0 0 width1 height 5 roundbox showadgrays {0.3}{0} ifelse setgray % for brown border fill % inside box sidethk botheight width1 sidethk 2 mul sub height topheight sub botheight sub inrad roundbox showadgrays {grayshade setgray}{white} ifelse fill black % shade for web /cstretch 0.7 def /sstretch 1.2 def /font1 /Revue 10 gonzofont /font3 /Revue 9 gonzofont /font4 /Revue [9 0 0 9.05 0 1] gonzofont /font9 /Helvetica-Bold 6.5 gonzofont /font2 /Revue 14 gonzofont font1 % adjust center /bc bc sidethk 2 div add def % top lettering white bc bt 22 add (|1new from) cc bc bt 6 add (|2DON LANCASTER) cc bc -17 (|2SYNERGETICS) cc /yinc 10 def bc -28 (|3B|1ox |3809-EN|1 |1Thatcher, |3AZ 85552 |4(|3520|4)|3 428-4073|1) cc /cstretch 0.1 def /sstretch 0.1 def /font5 /Helvetica-Narrow 8 gonzofont /font6 /Helvetica-Narrow-Bold 10 gonzofont /font7 /Helvetica 6 gonzofont /font8 /Helvetica-Narrow-Bold 8 gonzofont /font: /Helvetica-Bold [5 0 0 4.95 0 6] gonzofont % uneven for distillery /font- /Helvetica-Narrow-Oblique 8 gonzofont black 3 3 (|7FREE US VOICE HELPLINE) cl br 3 sub 3 (|7VISA|j/|jMC) cr /xpos 4 def /txtwide br 8 sub def /yinc 8.5 def /ypos bt 15.5 sub def /amacro {/ypos ypos 2 add def} def /cmacro {/ypos ypos 1 add def} def /kern 0.5 def /bw width1 sidethk 2 mul sub def % obtuse code avoids the arcto bug /bmacro { gsave showadgrays {0.3}{0} ifelse setgray % for brown border -0.45 ypos translate 0 0 mt 5 [-0.5 30 -0.5 3 bw 1 add 3 bw 1 add 30 ] roundpath 0 -31 rlineto bw 1 add neg 0 rlineto closepath fill newpath 0 0 mt 5 [-0.5 -30 -0.5 -3 bw 1 add -3 bw 1 add -30 ] roundpath 0 31 rlineto bw 1 add neg 0 rlineto closepath fill grestore } def /Umacro {ypos} def xpos ypos (|/tinton1 |C|6A|kCTIVE|j|j FILTER|j|j COOKBOOK |h|a |F|5The sixteenth|k (!|j)|k printing of Don's bible on analog op-amp lowpass, bandpass, and highpass active filters. De-mystified instant designs. |8 $28.50|1 |b |a |h |/tinton1 |C|6RESEARCH|j|j INFOPACKS |h|F|a |5Don's instant cash-and-carry flat rate consulting service. Ask any reasonable technical \ question for a detailed analysis and complete report. See |/surl www.tinaja.com|j/|jinfo01|/info01g \ for specifics. \ |8$79.00|5 |b |a |h |C|/tinton1 |6CMOS|j|j AND|j|j TTL|j|j COOKBOOKS |h|a |F|5Millions of copies in print worldwide. |8THE|5 two books for digital integrated circuit fundamentals. About as hands-on as you can get. |8$28.50 |5each.|1 |b |a |h |/tinton1 |C|6INCREDIBLE|j|j SECRET |h|c |/tinton1 MONEY|j|j MACHINE|j|j II |5|h|F|a Updated 2nd edition of Don's classic on setting up your own technical or craft venture. |8$18.50|1 |b |a |h |/tinton1 |C|6LANCASTER|j|j CLASSICS|j|j LIBRARY |5|h|a|F Don's best early stuff at a bargain price. Includes the CMOS Cookbook, The TTL Cookbook, Active Filter Cookbook, PostScript video, Case Against Patents, Incredible Secret Money Machine II, and \ Hardware \ Hacker II reprints. |8$119.50|1 |b |a |h |/tinton1 |C|6L|kOTS|j|j OF|j|j OTHER|j|j GOODIES |5|h|a) stringgonzo %%%%%%%%%%%%%%%%%%%%%%%% % (A) WIDTH CALCULATIONS 2.20.91 % A new curwide variable lets you calculate the gonzo string % width independent of printing it. Handy for menu justify, etc.. % Use has to be bracketed with /oktoprint false def /oktoadvance % false def --- stuff --- and then true. Works with any justify mode. % make this change to main code so lengths can be extracted. Note that % roomleft gets flushed at line end. gonzo begin /endtheline {/curwide txtwide roomleft sub def justx cvx exec oktoprint {printline} if} bind def % calloutwidth calculates only the width of the string, returning it % to the top of the stack. For consistency with other callouts, use % 0 0 (string) cw. This INCLUDES all stretching and font changes! /cw {save /snapc1 exch def /oktoadvance false def /oktoprint false def /linestring linestring2 def /justx (justL) def 3 1 roll /ypos exch def /xpos exch def stringgonzo curwide snapc1 restore} def end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % (B) MENU JUSTIFY 2.20.91 % The cm routine takes a leading string and a trailing string seperated % by a delimiter and places a row of CONSTANT WIDTH, PRECISELY SPACED, % VERTICALLY ALIGNED and WHOLE dots (or whatever) between the two. It % is based on putting down the dots first and ERASING only whole dots % that are not wanted. /menudots (. ) def /menufont {font5} def /mdoteht 3 def /menudelim ( ) def /cropleadingspaces true def % drawmdots draws a line of menu dots, using plain old show /drawmdots { gsave menufont xxm yym moveto txtwide menudots stringwidth pop dup /mdot1 exch def div floor cvi {menudots show} repeat grestore } def % spchomp takes a string and conditionally removes all leading spaces, % returning the truncated string /spchomp {cropleadingspaces {dup 0 exch {32 eq {1 add}{exit} ifelse } forall} if exch dup length 2 index sub 3 -1 roll exch getinterval} def % mlineproc takes the mline string and processes it into a leading string, % the dot row, and a trailing string. Unused dots are erased with logic % to insure whole dots only. Null strings are ignored. /mlineproc {mline length 0 gt {drawmdots mline menudelim search {/lmstr exch def pop spchomp /rmstr exch def } if gsave showadgrays {grayshade}{1}ifelse setgray % for web color xxm yym moveto mdoteht setlinewidth 0 0 lmstr cw mdot1 div ceiling mdot1 mul 0 rlineto stroke xxm txtwide mdot1 div floor mdot1 mul add yym moveto 0 0 rmstr cw mdot1 div ceiling mdot1 mul neg 0 rlineto stroke grestore xxm yym lmstr cl xxm txtwide add yym rmstr cr /yym yym yinc sub def} if} def % mj menujustify accepts tabbed string pairs and converts them into % dotted menu listings.. /cm {gsave /msg exch def /yym exch def /xxm exch def { msg (\n) search {/mline exch def pop /msg exch def mlineproc} {/mline exch def mlineproc exit } ifelse} loop grestore} def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % /txtwide 170 def % textwidth /txtwide txtwide 8 sub def /yinc 8 def xpos 4 add ypos 0 sub (Tech Musings V or VI $24.50 Ask the Guru I or II or III $24.50 Hardware Hacker II, III or IV $24.50 Micro Cookbook I $19.50 PostScript Beginner Stuff $29.50 PostScript Show and Tell $29.50 PostScript Video & secrets $29.50 PostScript Reference II $34.50 PostScript Tutorial/Cookbook $22.50 PostScript by Example $32.50 Understanding PS Programming $29.50 PostScript: A Visual Approach $22.50 PostScript Program Design $24.50 Thinking in PostScript $22.50 LaserWriter Reference $19.50 Type 1 Font Format $16.50 Acrobat Reference $24.50 Whole works (all PostScript) $380.00 Technical Insider Secrets |9|kFREE|j|j|j|5 ) cm /txtwide txtwide 8 add def xpos ypos (|F |h|c|c|c |b |a |h |/tinton1 |C|6BOOK-ON-DEMAND|j|j PUB|j|j KIT |h|F|a |5Ongoing details on Book-on-demand publishing, a new method \ of producing books only when and as ordered. Reprints, \ sources, samples. |8$39.50|5 |b |a |h |/tinton1 |C|6THE|j|j C|kASE|j|j A|kGAINST|j|j P|kA|kTENTS |h|F|a |5For most individuals, patents are virtually certain to result in a net loss of sanity, energy, time, and money. \ This reprint set shows you Don's tested and proven real-world alternatives. |828.50|5 |b |a |h |/tinton1 |C|6BLATANT|j|j OPPORTUNIST|j|j I |h|F|a |5The reprints from all Don's Midnight Engineering columns. Includes a broad range of real world, proven coverage on small scale technical startup ventures. Stuff you can use right now. |8$24.50|5 |b |a |h |/tinton1 |C|6RESOURCE|j|j BIN|j|j I |h|F|a |5A complete collection of all Don's Nuts & Volts columns to date, including a new index and his master names and numbers list. |8$24.50|5 |b |a |h |/tinton1 |C|6FREE|j|j SAMPLES |h|F|a |5Check Don's Guru's Lair at |-|/surl http://www.tinaja.com|5|/tinaja for interactive \ catalogs and online samples \ of Don's unique products. Searchable reprints and reference resouces, too. Tech help, hot links to cool sites, consultants. |jemail:|j|- |/surl don@tinaja.com|1|/maildon ) stringgonzo showreaderservicenumber { /sstretch 0.25 def /cstretch 0.20 def /font1 /Helvetica-Bold [6 0 0 8 0 0 ]gonzofont bc 0 sub botheight neg 10 sub 2 sub % (Write in ) readerservicenumber ( ) cvs mergestr % ( on Reader Service Card.) mergestr cc (FREE catalog: http://www.tinaja.com (do NOT provide RS number!!) ) cc } if adsave restore } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % %%% ADDITIONAL ELECTRONICS PATCHES %%%% electronics begin /npn {gsave newpath exch 0.2 sub exch translate -.1 0 1.2 0 360 arc gsave grayshade dup 1 ne {0.15 sub} if setgray fill grestore line2 stroke -0.2 0 translate line3 -.3 -.7 moveto 1.4 u line1 -.3 0 mt 1.3 l -.2 .4 mt 0.6 0.4 rlineto 1.2 u newpath -.2 -0.4 mt 0.6 -0.4 rlineto 1.2 d newpath 0.4 -0.75 mt -.2 .3 rlineto -.2 -.3 rlineto closepath fill grestore} def /npnl {gsave translate -1 1 scale 0 0 npn grestore} def /pnp {gsave newpath exch 0.2 sub exch translate -.1 0 1.2 0 360 arc gsave grayshade dup 1 ne {0.15 sub} if setgray fill grestore line2 stroke -0.2 0 translate line3 -.3 -.7 moveto 1.4 u line1 -.3 0 mt 1.3 l -.2 .4 mt 0.6 0.4 rlineto 1.2 u newpath -.2 -0.4 mt 0.6 -0.4 rlineto 1.2 d newpath -.2 .4 mt .3 .4 rlineto .1 -.3 rlineto closepath fill grestore} def /pnpl {gsave translate -1 1 scale 0 0 pnp grestore} def /circ3 {gsave currentpoint newpath 0.8 0 360 arc gsave grayshade dup 1 ne {0.15 sub} if pop 1 % try white setgray fill grestore black line1 stroke grestore} def % end % electronics % %%%ZZZZ%%%%%%%%%%%%%% URL PATCHES %%%%%%%%%%%%%%%%%%%%%%%%%%%% % patch definitions... /maildon {(mailto:don@tinaja.com) eurl } def /tinaja {(http://www.tinaja.com) eurl } def /consult {(http://www.tinaja.com/consul01.html) eurl} def /netscape {(http://www.netscape.com) eurl } def /adobe {(http://www.adobe.com) eurl } def /aerp {(http://www.aa.washington.edu/AERP/CRYOCAR/CryoCar.htm) eurl } def /jdisk {(http://www2.hawaii.edu/suremath/jdisk1.html) eurl } def /billb {(http://www.eskimo.com/~billb/freenrg/n-mach.html) eurl } def /cool {(http://www.mtsc.unt.edu/CooLN2Car.html) eurl} def /hack73 {(http://www.tinaja.com/glib/hack73.pdf) eurl} def /hacklib {(http://www.tinaja.com/hack01.html) eurl} def /magic {(http://www.tinaja.com/magsin01.html) eurl} def /fourier {(http://www.tinaja.com/psutils/fourier.ps) eurl} def /zeroharm {(http://www.tinaja.com/psutils/zeroharm.ps) eurl} def /sincat210 {(http://www.tinaja.com/sn210cat.ps) eurl} def /belljar {(http://www.tiac.net/users/shansen/belljar)eurl} def /inreach {(email:jgcurtis@inreach.com) eurl} def /spacetime {(http://www.tefbbs.com/spacetime/index.html) eurl} def /jfox {(http://www.dnai.com/~jfox/store.htm) eurl} def /safety {(http://www.safetylink.com) eurl} def /sourcecode {(http://www.tinaja.com/glib/hack68.psl) eurl} def % power method... /setglib {mark (http://www.tinaja.com/glib/) 2 index 20 string cvs mergestr (.pdf) mergestr /eurl cvx ] cvx def} def /sethtml {mark (http://www.tinaja.com/) 2 index 20 string cvs mergestr (.html) mergestr /eurl cvx ] cvx def} def /setweb {mark (http://www.) 2 index 20 string cvs mergestr (.com) mergestr /eurl cvx ] cvx def} def /magicsin {/msinprop} def /parallax {/parallaxinc} def [ /when2pat /msinprop /magicsin /nuts08 /gramtram /muse112 /hack64 /hack86 /ratholes /hack52 /postflut /emergop4 /resbn67 /resbn73 /elesimp /dontsick /muse117 /bannyear /trimode /syncat01 /hack59 /hack82 /bustpat /resbn66 ] {setglib} forall [ /magsn01 /patnt01 /ismm01 /ismm01 /libry01 /resbn01 /whtnu01 /blat01 /advt01 /barg01 /amlink01 /acrob01 /post01 /bod01 /scweb01 /tinaja01 /synlib01 /info01 /h2gas01 /picup01 /webwb01 /golly01 /santa01 /bargte01 /amlink01 /hack01 /weblib01 /pseudo01 /info01 /beewb01 ] {sethtml} forall [ /parallaxinc /lindsay /bh /amazon /hotbot /discoverypark /keelynet /homepower /epri /rmi /mgfx /newtek /maxim-ic /tinaja /digital.altavista ] {setweb} forall /papers {(http://cfarx1.harvard.edu/rx_lab) eurl} def /mmt {(http://maisel.as.arizona.edu:8080) eurl} def /nrao {(http://info.aoc.nrao.edu) eurl} def /eskimo {(http://www.eskimo.com/~billb) eurl} def /lindsay {(http://www.keynet.net/~lindsay) eurl } def /adams {(http://www.adams1.com/pub/russadam) eurl} def /aha {(http://www.ahasoft.com/complink.htm) eurl} def /wavelet {(http://www.waveloe.org/wavelet/links.html) eurl} def /drms {(http://www.drms.dla.mil) eurl} def /billb {(http://www.eskimo.com/~billb) eurl} def /info01g {(http://www.tinaja.com/info01.html) eurlg} def %%%%%% % This code locks pdfmark commands out of a PostScript printer. /pdfmark where {pop}{userdict /pdfmark /cleartomark load put} ifelse % /surl "start url" marks the beginning of a text sequence to be urled. % It also paints the text blue... /surl {mark /blue cvx 0.33 /setgray cvx % change text to blue /currentpoint cvx % remember box start /urly /exch cvx /store cvx /urlx /exch cvx /store cvx ] cvx % complete deferred command printlist exch 3 index exch put % stuff into gonzo printlist exch 1 add exch % increment gonzo list count } def % /eurl "end url" unmarks the end of a text sequence and sets up % the pdfmark needed to define the Acrobat web link. /eurl {mark % start deferred proc exch % position url string /beige cvx 0 /setgray cvx % turn blue marker off /makeurl cvx % defer call of url builder ] cvx % complete deferred proc printlist exch 3 index exch % stuff into gonzo printlist put exch 1 add exch % increment gonzo list count } def /eurlg {mark % special green for ad % start deferred proc exch % position url string /green cvx 0 /setgray cvx % turn blue marker off /makeurl cvx % defer call of url builder ] cvx % complete deferred proc printlist exch 3 index exch % stuff into gonzo printlist put exch 1 add exch % increment gonzo list count } def % /makeurl generates the pdfmark, receiving a {(urlstring) makeurl}. % Note that it is not called until formatted printlist time... /urlover 0.2 def % fraction of hot area over bounds /makeurl { /cururlname exch store % save the url string mark % start pdfmark currentfont /ScaleMatrix get 3 get /fsize exch store % guess height /Rect [ urlx fsize urlover mul sub % set box left x urly fsize urlover mul sub % set box left y currentpoint exch fsize urlover mul add exch fsize add ] /Border [ 0 0 0] % [0 0 0 ] = none; [0 0 2] = debug /Color [ .7 0 0 ] /Action <> /Subtype /Link /ANN % annotation type pdfmark % call pdf operators } def %%%%%%% END MUSE PATCHES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% muse3 starttemplate /sstretch -0 def % try even looser /kern 0.5 def /dropindent 34 def % adjust for width of drop cap /sstretch 0 def % looser still /font0 /Times-Bold [48 0 0 54.1 0 -32] gonzofont % normal %/font0 /Times-Bold [45 0 0 54.1 0 -32] gonzofont % narrow M /font: /Times-Roman [9.5 0 0 -9.5 0 4.5 ] gonzofont /font9 /Times-Roman [6.8 0 0 7.0 0 -3] gonzofont % squared subscript /font= /Times-BoldItalic [9 0 0 9 0 0 ] gonzofont % subtitles /font9 /Symbol 9.5 gonzofont % delta /kern 0.5 def % Command Summary: % |0 - small caps font |1 - normal text font |2 - italic text font % |3 - bold text font |4 - caps text font |6 - header font % |F - fill justify |L - left justify |z - zero indent % |p - normal indent |y - negative linefeed |8 - header font % |g - start gonzo |x - stop gonzo |a - start drop cap % |b - main body text |c - start sub header |d - end sub header % |o - complement char /sstretch 0 def % /font9 /Symbol [9 0 0 0 0 0] gonzofont % delta /kern 0.5 def /font; /Times-Roman [6 0 0 6.01 0 3] gonzofont % square root symbol and gonzo box autoposition linker /topstrlist {mark 3 1 roll {/roomleft exch roomleft exch sub def printlist exch 3 index exch put exch 1 add exch} /exec cvx ] cvx def} def /boxit{ gsave line1 currentpoint translate -1 -3 mt 10.5 pu 50.5 pr 10.5 pd closepath line1 stroke grestore} 0 topstrlist /sqrtsymbol {gsave currentpoint translate line1 3 3 moveto 2 -5 rlineto 4 12 rlineto 32 0 rlineto stroke grestore} 0 topstrlist % TEXT STARTS HERE /tabs [60] def startgonzo |a A |b n update to last month's free energy resource sidebar: The |2International Association for New Science|1 newly released their |4540|1 page proceedings from their latest |2International Symposium on New \ Energy|1. At |4$49.50.|1|p Most of the major players show up here, along with bunches of historical references. All of the usual topics are covered \261 antigravity, Reed motors, pulsed magnetics, zero point scalar energy, homopolar generators, Tesla \ earth resonance, perpetual motion, and even cancer cures. My own personal view is that this is one fascinating and wonderously bizarre work of fiction. I do feel that many of the papers presented exude a distinct aura of outright hogwash. On the other hand, step number one in researching any controversial topic is to find out who is doing what to whom. Even a totally absurd and "not even wrong" notion can lead to genuinely \ \ innovative new concepts. |c Thermoelectric review |d There sure is a lot of interest in the solid state \ thermoelectric coolers now cropping up surplus. \ Sadly, most hackers don't pick up on the fact that \ there are several |2very|1 rude surprises waiting \ when they try to use these. So, one more time: These thermo modules are |2extremely|1 \ inefficient and need |2extremely|1 good heatsinks. \ They are strictly limited to very low power uses. They \ also |2demand|1 heat flux calculations. For most \ uses most of the time, the \ |/red |/tinton1 |2thermoelectric cooling \ |/tinton1 modules simply do not work|1. Solid state thermoelectric modules \ using the |2Peltier|1 cooling effect were developed \ over three decades ago and have not improved or \ changed one whit since. \ \ One current supplier seems to be |2Melcor|1. Figure one shows a typical heat pumping curve for the \ larger twenty watt module. Applying a dc current \ across the device causes heat to be moved \ from one surface to another. This module might \ need fifteen volts at three amps for operation. Note that the heat pumped depends inversely on \ your temperature drop across the device. Yes, you \ can pump twenty watts of heat through a |2zero|1 \ temperature difference. Or you can pump zero watts of \ heat across a |450|1 degree temperature difference. \ With, of course, |2zero|1 efficiency. More typically, you'll want to both pump heat and \ have a high delta-T. A normal operating point might \ be a |425|1 degree drop when pumping |410|1 watts. The module data sheets carefully bury their \ efficiency figures for most normal operating \ points. Often, |2three|1 watts of energy are \ required to move one. For an |4EER|1 |2Energy Efficiency \ Rating|1 of a laughable |40.33|1. Compare this against \ an air conditioner having an |4EER|1 of |415|1. That low efficiency would not be all that bad if all \ of your excess heat was not generated in the \ wrong place at the wrong time. But what you have \ done when you use a |4TE|1 module is |2add|1 heat \ energy precisely where you are trying to eliminate it. |/aqua |/tinton1 |2It is trivially easy to pick up \ more |/tinton1 delta-T rise between your module hot \ |/tinton1 side and \ ambient than the delta-T \ |/tinton1 cooling the module is providing!|1 |/black Let's use an aquarium cooler as an example. Now, there is another name for any large aquarium. It is called a |2super efficient heatsink|1. So, let's take our super efficient heatsink and then remove some heat \ from it. Because of that sad |4TE|1 module inefficiency, we \ may have to add three new watts of heat for every \ one removed. Naturally, we would not want the new heatsink to rise up \ as far above ambient as the aquarium goes below, or we \ will simply be heating up the ambient air. So, we'll \ shoot for an output temp rise of only a quarter the \ cooling drop. Thus\274 |/tinton1 |2Your final heatsink will have to be \ |/tinton1 |516|2 times better than your \ aquarium!|1|/tintoff A handy way to do this is to simply \ use a second aquarium which is |416|1 times \ larger in size. The two key numbers you'll have to look for are \ your |2watts of cooling required|1 and \ the |2heatsink thermal impedance|1. Going on back \ to square one, a |2BTU|1, or |2British Thermal Unit|1 is \ the amount of \ energy needed to raise or lower the temperature \ of one pound of water by one degree F. There are around eight pounds of water per gallon, so \ eight |4BTU|1's are needed to shift the temperature \ of a gallon of water by one degree F. A temperature \ change of one |4BTU|1 per minute will occur \ when |417.58|1 watts of power are input. Heat flux ends up proportional to temperature \ difference. For a given heatsink, you'll get \ twice the delta-T for twice the watts passed \ through. Math similar to plain old Ohm's law defines \ the |2thermal impedance|1. A typical ordinary heatsink might have a thermal \ impedance of between two and ten degrees C per watt. \ If the thermal impedance is five degrees per watt and \ if you are transferring eight \ watts, the thermal rise will be a total of forty \ degrees. To get below one degree per watt, you usually have \ to go to forced air cooling. To get under half a degree per \ watt, a pumped water cooling is often the best choice. The key problem with solid state thermoelectric \ coolers is that |/tinton1 |2the heat |/tinton1 rise \ of your hot side of the |5TE|2 module \ |/tinton1 above ambient can easily exceed the \ |/tinton1 net cooling of the module itself!|1 Ferinstance, you might have your module doing a |430|1 \ degree cooling, but your heatsink hot side \ might have a |440|1 degree rise above ambient. \ For a net result of ten degrees of |2heating|1. |/beige In the case of the aquarium, you can easily measure \ the heat flux. The results will depend on the surface area of the aquarium, the ambient air flow, the temperature drop required, and the \ amount of water present. Temporarily remove the fish and fill the aquarium with ice water. But otherwise leave it run with the usual lights and pumps and whatever. Next, carefully measure your temperature |2vs|1 time as the ice melts \ and slowly reaches room temperature. The |2Radio Shack|1 |4#277-0123|1 digital thermometer is ideal for this. Then plot your temperature rise versus time on a graph. Next, find the |2slope|1 of the warming curve |2at your target temperature|1, in degrees per minute. To hold the target temp, \ the degrees per minute cooling you need should equal \ the degrees per minute warming taking place. Multiply the pounds of water times the degrees per \ minute of cooling you will need to find the |4BTU|1's \ per minute required. Multiply again by |417.58|1 to get the cooling watts needed. Finally, multiply by some fudge factor like |41.5|1 for a safety margin. The chances are your final cooling power required will be |2hundreds|1 of times higher than what can be done using |4TE|1 modules. I haven't actually run this warming test, but I'd \ guess that |4300|1 watts of cooling would not be \ unreasonable for a larger aquarium. And if you do burn up three watts of \ inefficiency for every single watt pumped, something \ like |41200|1 watts of heat will have to go out \ through your heatsink. With a one watt per \ degree |4C|1 rise heatsink, the module \ hot side temperature will try to go to |41200|1 degrees Farenheit. Otherwise known as a fish fry. |2Thirty|1 of the twenty watt modules would be needed! Do those new |4CPU|1 thermoelectric coolers work? I'd be willing to bet that if you removed the cooler and coupled the heatsink directly to the |4CPU|1 chip itself, the results would end up \ as good or better. Simply because you are not adding extra heat at a |43:1|1 premium where you don't want it. A related story: Years ago there was this total \ federal solar fiasco involving a school in the \ rural south. This was to be a pilot demonstration \ project of a solar adsorption cycle cooler. Their results \ weren't quite as good as expected, so they added a \ new five ton evaporative cooler to the output to \ improve the heatsinking to ambient \ air. Then someone asked this rather embarassing \ question: How much evaporative cooling would have \ been needed if the solar adsorbtion cooling was \ never in use at all? The answer?|/aqua |/tinton1 |2Three tons!|1 |/beige Using |4TE|1 modules for many hacker applications can end up the same as building a bonfire inside an icebox. Are there any places at all where |4TE|1 modules can be used? Certainly. |2If|1 you have carefully made your heat flux measurements. And |2if|1 you are only moving tiny amounts of heat out of a \ superinsulated region. And |2if|1 you are dumping into a big heatsink with an unusually low delta-T. You also have to use super smooth surfaces, proper thermal grease, and avoid \ |2all|1 power supply ripple. The tiniest amount of ripple will foul things up because the ripple troughs heat six times better than the peaks will cool. Naturally, trying to freeze ice will be beyond the pale. Figure two shows some guidelines for proper use of |4TE|1 modules. These modules can be a sure fire winner for most science fairs, where you can easily feel all the heat going from your thumb to your finger. Even with a single alkaline or lithium |4"D"|1 cell. They are \ also quite useful for chilled mirror dewpoint instruments. And handy in high vacuum aps where moving parts are a no-no. |4TE|1 modules are great for cooling microscope \ stages, special astronomy instruments, and \ infrared detectors. But the modules don't \ seem usable in satellite dishes because gain \ drops faster than \ noise figure improves. What are the practical alternates to |4TE|1 modules? \ Small compressors are not that big a deal. Obvious \ sources are drinking fountains, refrigerators, \ icemakers, and reworked auto air \ conditioners. One source of info on this is |5HVAC |2Contractor|1. A drinking fountain compressor will only need |460|1 watts of new energy to pump |4300|1. But the neatest substitutes for |4TE|1 modules are called |2vortex coolers|1. This second cousin to a perpetual motion machine seems to blatantly violate thermodynamic laws. \ They do not, of course. A vortex cooler is simply a magic Tee-shaped pipe. No moving parts at all. You blow ordinary air into the middle, and hot air comes out one end and cold air out the other. Down to \ |4-40|1 Farenheit temperatures and tons of equivalent cooling. Leading suppliers include |2Vortec|1 and |2Exair|1. Some important uses are for electronic cooling and stopping needle breakage on industrial \ sewing machines. |c Some pulse monitor discoveries |d |/red |/tinton1 |2Warnings: Do not ever modify an \ |/tinton1 |5EKG-|2type pulse monitor any way for \ |/tinton1 any reason!|1|/tintoff Do not ever attempt to build up your own units of this type! What follows is not in any manner to be \ construed as medical advice. |1|/beige I've been developing some aerobic exercise software for a client. Using PostScript, of course. Which I have found to be the greatest universal hacker's language anywhere ever. I have also been \ looking closely at the pulse monitors and have found some fascinating new electronic concepts that you might wish to expand upon one way or another. These concepts should apply beautifully to short haul \ telemetry apps. But |2please|1 be careful to heed all \ of the above warnings. One way to deal with exercise, of course, is to get yourself a corned beef and pork fat sandwich, add a helping of Eggs Benedict, and chow down until the urge goes away. There are others who do feel that \ sustained exercise programs provide positive benefits towards longevity, physical conditioning, well being, and for use as medical therapy. The harder that you exercise, the higher your heart rate. \ An |2aerobic|1 (or "with oxygen") exercise attempts to \ set up a |2target zone|1 elevated pulse rate over a \ fairly long time period. Say half an hour to \ an hour for cycling, group aerobics, swimming, jogging, or fast walking. A conditioning target zone might be |460|1 to |475|1 percent of the maximum heart rate. This max rate in turn can \ depend upon sex, age, and upon the advice of your physician or aerobics instructor. Ferinstance a |430|1 year old male might have a target zone of |4114|1 to |1142|1 beats per minute. That old "thumb and stopwatch" method of measuring \ pulse rate has some obvious problems. Not the least \ of which is that it woefully disrupts your program in progress. There are instead two \ popular new methods to measure pulse, the |2plethsymograph|1, and the |2EKG sensor|1. The plethsymograph is based on finger or toe capillaries expanding and contracting with each pulse beat. Shine infrared light on through your finger, and its transmission will vary with your pulse. \ Opacity depends on how much blood is present. You can then amplify, condition, and digitally average these variations to extract the current pulse rate. Cheaply, simply, and totally noninvasive. Infrared plethsymographs are easy to find, even \ as the |4$19.95|1 specials at K-mart. \ Unfortunately, many of these simply will not operate properly in aerobic exercise situations. The main \ problem involves |2motion artifacts|1. Any relative \ motion between sensor and finger will give false \ outputs and very erratic results. Better yet, there are |2EKG-style|1 or "chest type" monitors that directly measure the electrical activity of the heart. These usually are offered in two pieces, a small chest strap, and a \ stopwatch-type display that is either worn on your wrist or mounted on the bicycle or other exercise gear. The cost of these systems is often in the |4$70|1 to |4$200|1 range. But they are totally free of motion artifacts. And you can |2instantly|1 check your pulse at any time during the activity. \ Simply glance at your display. These also \ offer settable alarms that trip if you wander \ outside the target zone. One typical unit is the |2Edge Heart Rate Monitor|1 distributed by |2Polar|1 and stocked by such yuppy outdoor stores as |2REI|1. I did try this one in combination with a |2Trek|1 bicycling \ computer. A second brand is |2Favor|1. You could also get a combo monitor and bike computer in one unit, such as the |2Vetta|1 |4HR-1000|1 also offered by |2REI|1. At |4$95|1 list. |c How do they work? |d The chest unit is totally sealed and has an \ internal battery. In normal use, it gets replaced \ every year or two. The internal battery is \ purposely |2not|1 replaceable \ to guarantee that the unit remains unmodifiable. \ There are extremely stringent regulations over anything electronic which directly attaches to your chest. Obviously, the chest unit acts as a transmitter and the wrist unit serves as a receiver. The effective range is typically four feet or so. But what gets transmitted how? The answer to this one \ is yet another stunningly beautiful example of our \ quest for elegant simplicity. What we really have here is more short haul telemetry. But one that has to remain totally sealed, be compact and lightweight, reliably run forever under micropower, and literally be a throwaway item. \ At five bucks max manufacturing cost. The secret is a plain old inductive coupling. Figure \ three shows the secret waveforms that are used. What you really have here is a |45|1 kilohertz air core transformer, with the primary in the chest unit and \ the secondary in the wrist or handlebar receiver. Each pulse gets converted into a |436|1 cycle burst of |45|1 kilohertz sinewaves. You can very easily monitor these waveforms. Just take \ any old coil, such as the fifty foot roll of \ |2Radio Shack|1 wire. Add an iron core, such as a screwdriver. Center \ the coil near the \ chest unit. Watch the results on your scope. A pair of conductive pads pick up the |4EKG|1 signals on either side. These microvolt-sized signals are strongly amplified in a bandpass amplifier. There is probably some type of |4AGC|1 \ automatic gain loop to standardize the output levels. Then, a comparator of some sort derives a \ digital output for each pulse event. Each pulse event then generates a series of six digital impulses. Each impulse is around |480|1 microseconds wide and has an interpulse spacing of one \ millisecond. When very low power is your goal, you cannot use any \ kind of linear amp for your transmitter. Instead, \ the antenna is simply a five kiloHertz resonant coil. The plots found in my \ |/surl |2Active Filter Cookbook|1|/synlib01 tell us the |4Q|1 of this coil is around |420|1 or so. To transmit a signal, the resonant antenna coil gets \ whapped |2once every five cycles|1. The high |4Q|1 of \ the coil fills in during intermediate cycles. If you \ do look at your \ scope display very carefully, you will observe \ the modest exponential decay of all the \ intermediate cycles between impulse whappings. \ The long rundown time is also quite obvious. The spacing of the impulses can be tightly controlled. Which elegantly minimizes any need for super precise or ultra stable antenna tuning. Only the bandpass amplifier draws continuous current. Both |2Maxim|1 and |2Linear Technology|1 do make suitable amps that consume only microamps. In absence of any pulse input, there is no output and no \ transmitted signal sent. Even when a burst gets sent, the duty cycle to generate the burst is |410:1|1 and the duty cycle of the burst itself is typically |480:1|1 or so. X-raying the unit revealed a few surprises. A large \ lithium coin cell is used. The antenna is a ferrite \ rod, long axis horizontal that is \ apparently tuned by unwrapping a few turns. It gets \ resonated by a polystyrene cap. A |414|1 pin chip \ drives the antenna. Probably a |4CMOS|1 gate. The majority of the input circuitry is built up from \ nine |4SOT|1 transistors and |424|1 assorted \ resistors and caps. Special techniques are needed \ for noise rejection and ultra low power. The receiver is just a resonant coil and a bandpass \ amplifier that inputs into typical micro current \ stopwatch circuitry. This amplifier apparently shuts \ itself down in the absence of any transmitted \ signals. The receiver battery can get replaced and lasts \ a year or so. An averaging algorithm is used to smooth \ out the results. A sample printout for a routine exercise session is shown \ in figure four. The complete PostScript code to custom \ run these \ can be extracted from |/surl |4HACK68.PSL|1|/sourcecode You could build up an automatic data acquisition system to automate the whole process. But it is simpler and cheaper just to use a one-hand cassette recorder every five minutes and talk the speed and \ pulse rate to it. With practice, it takes less than two minutes to transfer the data. I've gathered several places to go for more info on \ pulse monitors into our resource sidebar for this \ month. |2Creative Health Products|1 offer a free \ comparison guide. |c New tech lit |d |2Up the Infinite Corridor|1 is a new book on the \ history of engineering at |2MIT|1 by Fred Hapgood. A \ really good read. Best is Fred's revival of a very \ old definition of engineering: |/aqua |/tinton1 |2A sense for the fitness of things|1. |/beige Lots of night vision electronics and surplus \ infrared viewers are sold by \ |2Resources Unlimited|1. A new |4$9.95|1 book on the history of |2Heathkit|1 from |2Heath Nostalgia|1. |2Antique Radio Laboratories|1 has a free catalog on \ all their products for radio restoration buffs. \ Included are pins, bases, and \ coil forms. An |2Oughtred Society|1 exists for the collectors of traditional slide rules and related calculating instruments. Named for the seventeenth century slide rule inventor. |4$20|1 for meetings \ and classified ads. |2Motorless Motion|1 is a project book from |2Mondo-tronics|1 on working with the shape memory "muscle wires" for robotics and similar uses. Included are fifteen easy-to-build projects and layout \ templates. From |2TriQuint Semiconductor|1, a new |2Data \ Communication Products|1 data book. About \ microwave mixers, amplifiers, and converters. |2Wireless Design & Development|1 is a new trade \ journal on new products for the emerging personal \ microwave communication services. As we've seen a number of times in past columns, \ any hardware hacker involvement with the patent system \ is virtually certain to end up a net loss of your time, \ energy, money, and sanity. Caused by the \ outrageous popular mythology which surrounds patents and patenting. A mythology that is almost always dead wrong. I have put together my new |/surl |2Case|/patnt01 \ |/surl Against Patents|1|/patnt01 reprint package that includes several hundred pages of proven alternates to patenting. A big directory of hundreds of the inventor \ organizations is included. |/tinton1 |-F|1 |x %%%%% Module to insert eight pdf menu options .... % Place after |x but before last showpage % work out an HTML like PDF response /button { makeurlx % make box shaped url gsave blue % settint xpos ypos 0.9 sub translate 0.1 dup scale 0 0 mt 28 pu 28 pr 28 pd closepath 0.85 setgray fill 0 0 mt 0 28 pu 4 -4 rlineto 20 pd 20 pr 4 -4 rlineto closepath 0.6 setgray fill 0 28 mt 28 pr 28 pd -4 4 rlineto 20 pu 20 pl closepath 0.75 setgray fill 8 8 mt 12 pu 13 -6 rlineto closepath 0.33 setgray fill grestore xpos ypos mt } def %%%%%%%%%%% links menu directory %%%%%%%%%%%% % This code locks pdfmark commands out of a PostScript printer. /pdfmark where {pop}{userdict /pdfmark /cleartomark load put} ifelse % /surl "start url" marks the beginning of a text sequence to be urled. % It also paints the text blue... /surl {mark /blue cvx 0.33 /setgray cvx % change text to blue /currentpoint cvx % remember box start /urly /exch cvx /store cvx /urlx /exch cvx /store cvx ] cvx % complete deferred command printlist exch 3 index exch put % stuff into gonzo printlist exch 1 add exch % increment gonzo list count } def % /eurl "end url" unmarks the end of a text sequence and sets up % the pdfmark needed to define the Acrobat web link. /eurl {mark % start deferred proc exch % position url string /black cvx 0 /setgray cvx % turn blue marker off /makeurl cvx % defer call of url builder ] cvx % complete deferred proc printlist exch 3 index exch % stuff into gonzo printlist put exch 1 add exch % increment gonzo list count } def % /makeurl generates the pdfmark, receiving a {(urlstring) makeurl}. % Note that it is not called until formatted printlist time... /urlover 0.2 def % fraction of hot area over bounds /makeurl { /cururlname exch store % save the url string mark % start pdfmark currentfont /ScaleMatrix get 3 get /fsize exch store % guess height /Rect [ urlx fsize urlover mul sub % set box left x urly fsize urlover mul sub % set box left y currentpoint exch fsize urlover mul add exch fsize add ] /Border [ 0 0 0] % [0 0 0 ] = none; [0 0 2] = debug /Color [ .7 0 0 ] /Action <> /Subtype /Link /ANN % annotation type pdfmark % call pdf operators } def % /makeurlx generates the box specific pdfmark, receiving % a {(urlstring) makeurl}. % Note that it is not called until formatted printlist time... /makeurlx { /cururlnamex exch store % save the url string mark % start pdfmark /Rect [ xpos % set box left x ypos 0.9 sub % set box left y xpos 2.8 add % box right x ypos 0.9 sub 2.8 add % box right y ] /Border [ 0 0 0] % [0 0 0 ] = none; [0 0 2] = debug /Color [ .7 0 0 ] /Action <> /Subtype /Link /ANN % annotation type pdfmark % call pdf operators } def % text link specific data /syncat01 {(http://www.tinaja.com/glib/syncat01.pdf) eurl} def /ismm01 {(http://www.tinaja.com/ismm01.html) eurl} def /amlink01 {(http://www.tinaja.com/amlink01.html) eurl} def /tinaja01 {(http://www.tinaja.com/tinaja01.html) eurl} def /info01 {(http://www.tinaja.com/info01.html) eurl} def /barg01 {(http://www.tinaja.com/barg01.html) eurl} def /advt01 {(http://www.tinaja.com/advt01.html) eurl} def /maildon {(mailto:don@.tinaja.com) eurl} def % button link specific data /syncat01x {(http://www.tinaja.com/glib/syncat01.pdf) button} def /ismm01x {(http://www.tinaja.com/ismm01.html) button} def /amlink01x {(http://www.tinaja.com/amlink01.html) button} def /tinaja01x {(http://www.tinaja.com/tinaja01.html) button} def /info01x {(http://www.tinaja.com/info01.html) button} def /barg01x {(http://www.tinaja.com/barg01.html) button} def /advt01x {(http://www.tinaja.com/advt01.html) button} def /maildonx {(mailto:don@.tinaja.com) button} def % %%%%%%%%%%%%%%%% end links directory %%%%%%%%%%%%%%%%%%%%%%%%%%%% /menu8 {gsave translate save /dosnap exch def /ybot -9999 def /ylimit -9999 def font3 font0 0 0 10 setgrid % 50 50 showgrid /cstretch 0.015 def /sstretch 0.015 def /font0 /Revue 1.2 gonzofont /font1 /StoneSans-Bold 1.3 gonzofont /font3 /Helvetica-Bold 3 gonzofont /kern 0.1 def 0 0 50 22.5 1 roundbox % clip gsave aqua 0.33 setgray fill % gsave % 0 27 mt 3 pu 50 pr 3 pd closepath 0.33 setgray fill % grestore % 0.33 setgray stroke white font3 /cstretch 0.1 def 25 20.5 (|0PLEASE |j|jCLICK |j|jHERE |j|jTO\274 ) cc /cstretch 0.015 def 0.5 2.2 49 17.3 0.8 roundbox 0.75 setgray fill % /yinc 3.5 def black font1 2.3 13.5 (|/syncat01x |1 Get a Synergetics |/surl catalog|/syncat01 ) cl 2.3 10 (|/ismm01x |1 Start your |/surl tech venture|/ismm01 ) cl 2.3 6.5 (|/advt01x |1 Sponsor a display |/surl banner|/advt01 ) cl 2.3 3 (|/info01x |1 Find |/surl research|/info01 solutions) cl 25 13.5 (|/maildonx |1 Send Don Lancaster |/surl email|/maildon ) cl 25 10 (|/barg01x |1 Pick up surplus |/surl bargains|/barg01 ) cl 25 6.5 (|/tinaja01x |1 Find out what a |/surl tinaja|/tinaja01 is) cl 25 3 (|/amlink01x |1 View recommended |/surl books|/amlink01 ) cl grestore dosnap restore} def % 57 348 menu8 57 66 menu8 %%%%%%%%%%%% end pdfmenu8 %%%%%%%%%%%% showpage % this optionally displays the figures /prodart false def prodart { % redefine figures /fig1x {40 50 2colwide f1h true pop false true /f1name /figure1 stdmusefig} def % link /fig2x {40 50 2colwide f2h true true /f2name /figure2 stdmusefig} def % link /fig3x {40 50 2colwide f3h true true /f3name /figure3 stdmusefig} def % link /fig4x {40 50 2colwide f4h true true /f4name /figure4 stdmusefig} def % link /helpx {50 200 1colwide h1h true false /helpname /hackhelp graymusefig} def /ad1 {100 100 1colwide f5h false true /ad1name /ad1copy stdmusefig} def % link % run color sequence /usecolor false def % special fig 1 /grayshade 0.92 def 1.5 dup scale {0 0 0.9 fig1x} exec showpage /narrowfig 0 def 1.5 dup scale {0 0 0.9 fig2x} exec showpage /narrowfig 0 def /narrowfig 0 def 1.5 dup scale {0 0 0.9 fig3x} exec showpage /narrowfig 0 def /narrowfig 0 def % landscape 30 0 translate 1.5 dup scale {0 0 0.9 fig3x} exec showpage /narrowfig 0 def /narrowfig 0 def 1.2 dup scale { 0 0 0.9 fig4x} exec showpage /narrowfig 0 def /surl{}def /maildon{} def /tinaja {} def -100 150 translate 1.5 dup scale {0 -6 1 help} exec showpage % turn off colors /setgray1 { dup grayshade 1 eq { 0.5 gt {pop 1}{pop 0} ifelse } {pop} ifelse setgray } def /grayshade 1 def /urlx 50 def % temp? /urly 50 def /tinton1 {} def /tinton {} def /usecolor false def % special for figure one /grayfig1 1 def 1.5 dup scale {0 0 0.9 fig1x} exec showpage /narrowfig 0 def % landscape -30 0 translate 1.5 dup scale {0 0 0.9 fig2x} exec showpage /narrowfig 0 def /narrowfig 0 def % landscape -30 0 translate 1.5 dup scale {0 0 0.9 fig3x} exec showpage /narrowfig 0 def /narrowfig 0 def 1.2 dup scale { 0 0 0.9 fig4x} exec showpage /narrowfig 0 def /surl{}def /maildon{} def /tinaja {} def -100 150 translate 1.5 dup scale {0 -6 1 help} exec showpage /showreaderservicenumber true def /showadgrays false def /tinton1 {black} def 1.5 dup scale {0 31 21 add 1 ad1} exec showpage 0 -400 translate 1.5 dup scale {0 31 21 add 1 ad1} exec showpage } if % 50 320 menu8 {{ Heat flux ends up proportional to temperature \ difference. For a given heatsink, you'll get \ twice the delta-T for twice the watts passed \ through. Math similar to plain old Ohm's law defines \ the |2thermal impedance|1. |/aqua A typical ordinary heatsink might have a thermal \ impedance of between two and ten degrees C per watt. \ If the thermal impedance is five degrees per watt and \ if you are transferring eight \ watts, the thermal rise will be a total of forty \ degrees. }} pop {{ }} pop