%! % Name of file: Tech Musings 140 New PC Drills, scanner "photographs" % IMPORTANT NOTE: The file gonzo.ps is required to run % this program. Uncomment ONE of the following two lines: (C:\\windows\\desktop\\gonzo\\gonzo.ps) run % use internal gonzo % (A:\\gonzo.ps) run % use external gonzo % GONZO20A Guru Gonzo PostScript power tools (Interim release) % Includes gonzo justification and layout utilities. % Copyright c 1990,1996 by Don Lancaster and Synergetics, Box 809, % Thatcher Arizona, 5552 (520) 428-4073 don@tinaja.com support % via http://www.tinaja.com All commercial rights and all electronic % media rights **FULLY** reserved. Reposting is expressly forbidden. % statusdict begin % statusdict /setduplexmode known {true setduplexmode} if end % systemdict /setstrokeadjust known {true setstrokeadjust} if /mastergray {0.92} 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 %%%%% 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 %%%%%%%%%%%% end pdfmenu8 %%%%%%%%%%%% 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 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% your gonzo code goes here. The usual way of starting it is with %% gonzo begin %% ps.util.1 begin %% printerror %% nuisance begin %% Additional use details appear in the POSTSCRIPT BEGINNER STUFF %% package from SYNERGETICS. %%%%%%%%%%%%%%%%%% COLORIZER MOD %%%%%%%%%%%%% %%%%%%%%%%%%%%%% % COLORIZING BLACK AND WHITE POSTSCRIPT MODULE % ===================================== /tintmat [ {dup 0.11 ge {0.11 sub 0.89 div dup 1 setrgbcolor} % 0 blue {0.11 div 0 exch 0 exch setrgbcolor} ifelse} {dup 0.3 ge {0.3 sub 0.7 div 1 exch dup setrgbcolor} % 1 red {0.3 div 0 0 setrgbcolor} ifelse} {dup 0.59 ge {0.59 sub 0.41 div dup 1 exch setrgbcolor} % 2 green {0.59 div 0 exch 0 setrgbcolor} ifelse} {dup 0.7 ge {0.7 sub 0.3 div 1 1 setrgbcolor} % 3 turquoise {0.7 div 0 exch dup setrgbcolor} ifelse} {dup 0.41 ge {0.41 sub 0.59 div 1 exch 1 setrgbcolor} % 4 magenta {0.41 div dup 0 exch setrgbcolor} ifelse} {dup 0.89 ge {0.89 sub 0.11 div 1 exch 1 exch setrgbcolor} % 5 yellow {0.89 div dup 0 setrgbcolor} ifelse} {dup 0.842 ge {dup .7 mul .59 sub .11 div 1 exch setrgbcolor} % 6 lime {0.89 div dup 1.1233 div exch 1.1233 mul 0 setrgbcolor} ifelse} {dup 0.731 ge {1 exch dup .41 mul .30 sub .11 div setrgbcolor} % 7 beige {0.856 div dup 1.155 mul exch 1.55 div 0 setrgbcolor} ifelse} ] def /tint 7 def /setgray {tintmat tint get cvx exec} bind 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 /red {0 settint} def /green {0.33 settint} def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % aqua % normal for blat %! % X E % Z % MUSE.116.Y gonzo begin ps.util.1 begin printerror nuisance begin longjob statusdict begin % statusdict /setduplexmode known {true setduplexmode} if end 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 38 mul def % height of figure one /f2h yinc 34 mul def % height of figure two /f3h yinc 27 mul def % height of figure three /f4h yinc 19 mul def % height of figure four /f5h yinc 25 mul def % height of figure five /f6h yinc 35 mul def % height of figure six /s1h yinc 22 mul def % height of custom sidebar /s2h yinc 46 mul def % height of n/n 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 % 2 sub adjust for gray top true /f1name /figure1 stdmusefig} def % link /fig2 {cm1 cmt f2h sub yinc add 3 add 2colwide f2h true true /f2name /figure2 stdmusefig} def % link /fig3 {cm1 cmt f3h sub yinc add 3 add 3colwide f3h true true /f3name /figure3 stdmusefig} def % link /fig4 {cm2 cmb 2colwide f4h true true /f4name /figure4 graymusefig} 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 {cm1 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 0.7 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 ] [ [{leftfooter} {leftheader} % {/narrowfig 50 store} {0 0 0.9 fig2} % {/narrowfig 0 store} % {0 0 0.9 fig3} % {0 -6 1 help} % temp help box ] % page two figures and control [ cm1 cmt f2h sub cmb {txw}] % column1 xpos ypos ylimit txtwide [ cm2 cmt f2h sub cmb {txw}] % column2 xpos ypos ylimit txtwide [ cm3 cmt cmb {txw} ] % column3 xpos ypos ylimit txtwide ] [ [ {rightfooter} {rightheader} % {/narrowfig 80 store} {0 0 0.9 fig3} {/narrowfig 40 store} { 0 0 0.9 fig4} % {0 -6 1 help} % temp help box {/narrowfig 0 store} % {12 -20 0.9 fig5} ] % page three figures and control [ cm1 cmt f3h sub cmb {txw}] % column1 ship [ cm2 cmt f3h sub cmb f4h add {txw}] % [ cm3 cmt f3h sub cmb f4h add{txw} ] % ] [ [{leftfooter} {leftheader} % { 0 0 0.9 fig4} {/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}] % % [ cm2 cmt s1h sub cmb h1h add {txw}] % [ cm2 cmt s1h sub cmb h1h add {txw}] [ cm1 cmt s1h sub cmb {txw}] [ cm2 cmt s1h sub cmb h1h add {txw} ] [ cm3 cmt cmb {txw}] % for two wide ] [ [{rightfooter} {rightheader} {0 31 21 add 1 ad1} {/namestretch 0.8 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 {45 yinc mul add } def [ [{leftfooter} {leftheader} % {-5 -35 1 fig4} % {/namestretch 0 def} % {14 0 0.85 side2} % {18 -24 0.9 fig4} % {4 -17 0.9 fig5} % {/namestretch 2.0 def} ] % 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 (Low priced printed circuit drill Fun with water soluble plastics More on scanned "photographs" Selected GPS Navigation books Postscript stepper motor control ) def /author (Don Lancaster's) def /titlename (T|k|kech M|k|kusings) def /titledate (September, 1999 |j) def /leftheading ( Tech Musings) def /rightheading titledate def /columnum 140 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: muse fig 140.1 pc drill pictorial % ............................ % figure 1 % save /snap1 exch def %%%%%%%%%%%%%%%%%%% 0 0 translate % position on box electronics begin bestgray 0 0 10 setgrid % 30 50 showgrid 3 0.3 translate % position in box /cstretch 0.02 def /sstretch 0.0 def /kern 0.1 def /yinc 1.0 def /font0 /Helvetica-Bold [1.2 0 0 1 0 -0.2] gonzofont /font1 /Helvetica 0.75 gonzofont /font4 /Helvetica 0.6 gonzofont /font3 /Helvetica-Bold 0.75 gonzofont /font2 /Helvetica-Oblique 0.75 gonzofont /font5 /Helvetica-Bold 1.1 gonzofont /font6 /Helvetica [2 0 0 1.4 0 0] gonzofont /font7 /Helvetica-Oblique 0.75 gonzofont /font8 /Symbol 0.75 gonzofont /font9 /Helvetica [.6 0 0 .6 -.15 .4] gonzofont /kern 0.15 def /tabs [16.5] def /txtwide 27 def 2 2 translate % main board beige 0 0 mt 35 pu 26 pr 35 pd closepath gsave grayshade setgray1 fill grestore line1 stroke /pulley {gsave translate newpath 0 2.1 0.7 0 360 arc gsave grayshade 0.15 sub setgray1 fill grestore line1 stroke -0.3 0.3 mt 2.2 pu 0.6 pr 2.2 pd closepath gsave white fill grestore line1 stroke 0 2.1 mt dot grestore} def /stepa {gsave translate 0 0 5 4 0.2 roundbox gsave grayshade 0.15 sub setgray1 fill grestore 0.33 setgray1 line2 stroke -0.5 1.6 mt 1.2 pl 0.8 pu 1.2 pr gsave closepath white fill grestore black line2 stroke 0 0.5 mt 0.5 pl 3 pu 0.5 pr closepath gsave grayshade 0.15 sub setgray1 fill grestore 0.33 setgray1 line2 stroke 1 setlinewidth 0 setlinecap black -1 2 mt 0.4 l font1 2.5 2.3 (stepper\n"A") cc grestore % get out of roundbox grestore} def /stepb {gsave translate 0 0 5 4 0.2 roundbox gsave grayshade 0.15 sub setgray1 fill grestore 0.33 setgray1 line2 stroke 5.5 1.6 mt 1.2 pr 0.8 pu 1.2 pl gsave white fill grestore black line2 stroke 5 0.5 mt 0.5 pr 3 pu 0.5 pl closepath gsave grayshade 0.15 sub setgray1 fill grestore 0.33 setgray line2 stroke black 1 setlinewidth 0 setlinecap black 6 2 mt 0.4 r font1 2.5 2.3 (stepper\n"B") cc grestore % get out of roundbox grestore} def % lifter gsave aqua 0.5 8 translate 0 0 mt 1.25 pu 25 pr 1.25 pd 9.5 pl -1 -1 rlineto 4 pl -1 1 rlineto closepath gsave grayshade setgray1 fill grestore black line1 stroke % slider on lifter red 6 1.25 mt 1.5 pu 13 pr 1.5 pd gsave grayshade setgray1 fill grestore closepath line1 stroke 6 1.4 mt 13 r % emphasis 6.3 1.7 mt dot 6.3 1.7 mt line1 5.5 l 6 13 add 0.3 sub 1.7 mt dot 6 13 add 0.3 sub 1.7 mt line1 5.5 r aqua % rollers newpath 14.1 0.2 0.8 0 360 arc 0.5 setgray1 fill 14.1 0.2 0.2 0 360 arc grayshade setgray1 fill % roller carrier gsave -0.5 0 translate 0.6 [ 13 13 10.25 15 10.25 17 15.75 17 15.75 15 13 13 ] roundpath gsave closepath grayshade setgray1 fill grestore black line1 stroke grestore newpath 14.1 15.8 0.8 0 360 arc 0.5 setgray1 fill 14.1 15.8 0.2 0 360 arc grayshade setgray1 fill black gsave -3.2 0 translate newpath 14.1 0.2 0.8 0 360 arc 0.5 setgray1 fill 14.1 0.2 0.2 0 360 arc grayshade setgray1 fill newpath 14.1 15.8 0.8 0 360 arc 0.5 setgray1 fill 14.1 15.8 0.2 0 360 arc grayshade setgray1 fill black grestore black % strings vert line1 0.5 2 mt 22 u 25 0.5 sub 2 mt 22 u 1 0 pulley 24 0 pulley % pc board on slider lime 7 2.8 mt 8 pu 11 pr 8 pd closepath gsave grayshade 0.15 sub setgray1 fill grestore 0.33 setgray1 line2 stroke black font1 4 0.3 (lifter) cc 8 1.8 (slider) cc 4 6.5 (pc board\nbeing drilled) cc grestore % off lifter aqua 2 30 stepa 19 30 stepb % monorail beige 12.25 1 mt 33 pu 1.5 pr 33 pd closepath gsave grayshade 0.15 sub setgray1 fill grestore 0.33 setgray1 line1 stroke % drill aqua newpath 14.5 15 2 0 360 arc gsave grayshade 0.15 sub setgray1 fill grestore 0.33 setgray1 line2 stroke beige black font1 4.5 3.3 (steppers moving together cause |/tinton1 |3VERTICAL|1|/tintoff motion) cc 21 3.3 (steppers moving differentially cause |/tinton1 |3HORIZONTAL|1|/tintoff motion) cc 16.5 28 (supporting\nmonorail) cc 14.5 15.8 (self-\ndrilling\nmotor) cc %%%%%%%%%%%%%%%%%%% end ypos snap1 restore /ypos exch def } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /figure2 { % name of textfile: muse fig 140.2 pc drill schematic % ............................ % figure 2 % save /snap2 exch def %%%%%%%%%%%%%%%%%%% 0 0 translate % position on box electronics begin bestgray 0 0 10 setgrid % 30 30 showgrid 2 0.8 translate % position in box /cstretch 0.02 def /sstretch 0.0 def /kern 0.1 def /yinc 1.0 def /font0 /Helvetica-Bold [1.2 0 0 1 0 -0.2] gonzofont /font1 /Helvetica 0.75 gonzofont /font4 /Helvetica 0.6 gonzofont /font3 /Helvetica-Bold 0.75 gonzofont /font2 /Helvetica-Oblique 0.75 gonzofont /font5 /Helvetica-Bold 1.1 gonzofont /font6 /Helvetica [2 0 0 1.4 0 0] gonzofont /font7 /Helvetica-Oblique 0.75 gonzofont /font8 /Symbol 0.75 gonzofont /font9 /Helvetica [.6 0 0 .6 -.15 .4] gonzofont /kern 0.15 def /tabs [16.5] def /txtwide 27 def /pinprocx {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 % just a reminder /nmosx {gsave translate gsave white line2 0 -1 mt 2 u grestore line1 -1 -1 mt 1 r currentpoint dot moveto gsave 1 d ground grestore 1 u 1 l larrow -1 1 mt 1 r 1 u -1.5 -1 mt 2 u 2 d 1 l -1 -1 mt 0.3 d 0.6 u -1 0 mt 0.3 d 0.6 u -1 1 mt 0.3 d 0.6 u line2 -1.5 -1 mt 2 u grestore} def /conn{ gsave translate 0 0 19 3.5 0.3 roundbox gsave grayshade setgray1 fill grestore 0.33 setgray1 line3 stroke black gsave [{line1 7 1 mt 0.78 d 1.72 dx ground}1 12] xrpt line1 [{10 2.5 mt 0.78 u 0.12 ux 4.5 ux}1 8] xrpt grestore line1 4 1 mt 0.75 d 1.75 dx ground 3 2.5 mt 0.75 u 1.75 0.5 sub ux uground 1 1 mt 0.75 d 0.25 dx 1 dx 3 l 7.5 u 5.5 r 1.5 u 1 1 translate /Helvetica-Bold findfont [0.4 0 0 0.55 0 0] makefont setfont gsave /pin# 1 def /dir 1 def /cpos 0 def gsave /numpins 36 def /cpos 1.5 def /pin# 18 def /dir -1 def pinprocx grestore gsave /numpins 36 def /cpos 0 def /pin# 36 def /dir -1 def pinprocx grestore grestore % get out of roundbox grestore % mystery why needed pinproc Xxx? grestore} def /holder {gsave translate newpath 0 0 1.5 0 360 arc gsave grayshade 0.15 sub setgray1 fill grestore line2 stroke 0 0 1 0 360 arc gsave grayshade pop 1 setgray1 fill grestore line1 stroke 0 1 mt dot 0 -1.5 mt dot 0 -1.5 mt 1 d line1 0 1 mt 0.28 u 0.72 ux 3.5 u circ1 grestore} def % repeat inductor for study /lloop { .5 1 -.5 1 0 0 rcurveto} def /ltie {.2 -.30 .4 -.30 .6 0 rcurveto} def /lexit{.2 -.40 .4 0 .6 0 rcurveto .4 r } def /lentry {.4 r .2 0 .4 -.4 .6 0 rcurveto} def /hcoil { /numloops exch def lentry numloops 1 sub {lloop ltie} repeat lloop lexit} def /winding {gsave /numloops exch def translate 0 0 moveto 0 rotate numloops hcoil grestore} def /vwinding {gsave /numloops exch def translate 0 0 moveto 90 rotate numloops hcoil grestore} def /vrwinding {gsave /numloops exch def translate 90 rotate 1 -1 scale 0 0 moveto numloops hcoil grestore} def /newvwinding {gsave /numloops exch def translate 0 0 moveto 90 rotate eraseold numloops hcoil grestore} def /newvrwinding {gsave /numloops exch def translate 0 0 moveto -1 1 scale 90 rotate eraseold numloops hcoil grestore} def /eraseold {gsave line3 grayshade setgray1 0.2 0 mt 2 numloops 1 sub 0.6 mul add 0.4 sub r grestore} def /stepper {gsave translate 0 0 7.5 6 0.2 roundbox gsave grayshade setgray1 fill grestore 0.33 setgray1 line3 stroke black 3.75 0 translate newpath 0 4 0.6 0 360 arc 0.33 setgray1 fill black line1 -2.5 -3 mt 7.5 u 1 r 7.5 d gsave -2.5 1 0.6 sub 4 newvwinding grestore gsave -1.5 1 0.6 sub 4 newvrwinding grestore line1 1.5 -3 mt 7.5 u 1 r 7.5 d gsave 1.5 1 0.6 sub 4 newvwinding grestore gsave 2.5 1 0.6 sub 4 newvrwinding grestore -2 4.5 mt dot 0 5 mt dot 2 4.5 mt dot -2 4.5 mt 0.5 u 4 r 0.5 d 0.5 u 2 l 4 u circ1 font1 gsave -2.8 -0.5 translate 90 rotate 0 0 (brown) cr grestore gsave -1.8 -0.5 translate 90 rotate 0 0 (red) cr grestore gsave 1.2 -0.5 translate 90 rotate 0 0 (green) cr grestore gsave 2.2 -0.5 translate 90 rotate 0 0 (white) cr grestore gsave -0.3 6.5 translate 90 rotate 0 0 (black) cl grestore 0 9.7 (+12v) cc grestore %get out of roundbox grestore} def line1 10.5 13 mt 3 d ground 10.5 11.5 vresistor % 0 20 mt 10 u % 0 22 7 newvwinding % 3 20 mt 10 u % 3 22 7 newvwinding line1 11 17 mt 1 u 6 lx 3 u 1 r 10 17 mt 2 ux line1 circ1 % nmos power 5 18 mt dot 7 18 mt 5 l lground 3.5 18 hresistor % holder diodecap 8 24 mt dot 8 24 mt 3 l 5 u 6 r 5 d 3 l 8 29 mt dot 5 26.5 udiode 11 26.5 vcap % stepper to ic line1 16 17 mt 1 u 2 l 2 u 18 17 mt 1.5 u 3 l 1.5 u 17 17 mt 3 ux 1 r 19 17 mt 3 u 20 17 mt 3 u 3 r 21 17 mt 2.5 u 6 r 1 u 22 17 mt 2 u 2 r 1 ux 23 17 mt 1.5 u 5 r 1.5 u 24 17 mt 1 u 2.5 r 1 d circ1 6 5 conn 8 22 nmosx aqua 8 26.5 holder aqua 12.75 23 stepper 21.75 23 stepper beige 24 13 mt 1.5 d ground 16 13 moveto 18 (ULN2803) (Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0 +V) (D7 D6 D5 D4 D3 D2 D1 D0 GND) dipdraw 9.5 13 moveto 6 (4N33 ) (BB CC EE) (IN+ IN- NC) dipdraw font1 black font1 15.3 1.5 (female Centronics from host PC)cc 13.5 9 (D0|j-|jD7) cc 10.7 0.5 add 11.3 (470|j|8W) cl 10 19.7 (+12v) cc 8 32.7 (+12v) cc 26.5 16 (+12v) cc 3.5 18.7 (22|jK) cc 3.5 21.7 (IRF|j|j510) cc 2.5 26.2 (1N4001) cc 10.3 23 (220|j|8m|1F) cc font3 11.5 26.7 (+) cc font1 5.5 31 (tool\nholder) cc 21 31.7 (Howard\n1-19-4200\nsteppers) cc gsave 3.7 4.7 translate 90 rotate 0 0 (printer select line) cl grestore end ypos snap2 restore /ypos exch def } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /figure3 { % name of textfile: muse fig 140.3 PostScript flutfile circle % ............................ % figure 3 % save /snap3 exch def %%%%%%%%%%%%%%%%%%% 0 0 translate % position on box electronics begin bestgray 0 0 10 setgrid % 40 50 showgrid /cstretch 0.02 def /sstretch 0.0 def /kern 0.1 def /yinc 1.0 def /font0 /Helvetica-Bold [1.2 0 0 1 0 -0.2] gonzofont /font0 /Helvetica-Bold 0.85 gonzofont /font1 /Helvetica 0.75 gonzofont /font4 /Helvetica 0.6 gonzofont /font3 /Helvetica-Bold 0.75 gonzofont /font2 /Helvetica-Oblique 0.75 gonzofont /font5 /Helvetica-Bold 1.1 gonzofont /font6 /Helvetica [2 0 0 1.4 0 0] gonzofont /font7 /Helvetica-Oblique 0.75 gonzofont /font8 /Symbol 0.75 gonzofont /kern 0.15 def /tabs [-1 0 -2.5] def /txtwide 37 def beige grayshade setgray1 5.2 21 mt 3.5 pu 11.2 pr 3.5 pd closepath fill 21.1 1.2 mt 23.3 pu 30.6 pr 23.3 pd closepath fill aqua grayshade 0.145 sub setgray1 11 10.5 6 0 360 arc gsave fill grestore line3 0.33 setgray1 stroke beige black 5 25.5 (|1|tThis PostScript code ... inch {72 mul} def 2 inch 2.5 inch 1.5 inch 0 360 arc closepath stroke) cl 21 25.5 (|1|tGenerates the following incremental stepper commands... |h BUH 1101101110110111011011101101110110111011011101101110110111011011 1011011101101110110111011011101101110110111011011101101110110111 0110111011011101101110110111011011101101110110111011011101101110 1101110110111011011101101110110111011011101101110110111011011101 1011101101110110111011011101101110110111011011101101110110111011 011101101110110111011011101101 D 2222222222223222222232222232222232223223222322322322232323232322 2332232332323233233233233233333233333333333333433334333343343433 3434343343434343434434434434443443444434443444344444443444444443 4444444444444444444445444444454444454444454445445444544544544454 5454545445544545545454554554545545554555555455555555555555655556 5555655656555656565565656566565656566566656656666656666666566666 6665666666666666666666666766666667666667666667666766766676676676 6767676767667766767767676776776776776777677777767777777777777707 7770777707707077707070770707070707007007070707007000070007000700 0000070000000070000000000000000000000100000001000010001001000100 1001000101010101001100101010101101101110111111011111111111111211 1121111211212111212121121212121212212212121212212221221222212221 222212222222212222222222 UHQ ) cl end ypos snap3 restore /ypos exch def } def %%%%%% /figure4 { % name of textfile: muse fig 140.4 scanner retouch secrets % ............................ % figure 4 % save /snap4 exch def %%%%%%%%%%%%%%%%%%% 0 0 translate % position on box electronics begin bestgray 0 0 10 setgrid % 30 30 showgrid /cstretch 0.02 def /sstretch 0.0 def /kern 0.1 def /yinc 1.0 def /font0 /Helvetica-Bold [1.2 0 0 1 0 -0.2] gonzofont /font1 /Helvetica 0.75 gonzofont /font4 /Helvetica 0.6 gonzofont /font3 /Helvetica-Bold 0.75 gonzofont /font2 /Helvetica-Oblique 0.75 gonzofont /font5 /Helvetica-Bold 1.1 gonzofont /font6 /Helvetica [2 0 0 1.4 0 0] gonzofont /font7 /Helvetica-Oblique 0.75 gonzofont /font8 /Symbol 0.75 gonzofont /font9 /Helvetica [.6 0 0 .6 -.15 .4] gonzofont /kern 0.15 def /tabs [-1.3 0] def /txtwide 27 def /yinc 1.5 def 8 18.8 (|1 |t1. |tSeek exact horizontal and vertical pixel locking. |t2. |tReduce, eliminate, or crowd all muddy shadows. |t3. |tAvoid retouching lettering. Replace if needed. |t4. |tBrighten and sharpen selectively. Do not oversharpen. |t5. |tInvent fine detail from scratch when appropriate. |t6. |tConsider scratch 3x5 and 5x7 antialiased lettering. |t6. |tWork in pieces for maximum sharpness and convenience. |t7. |tUse symmetry and duplication to ease repetitive work. |t8. |tDo all experiments and detail work on the side,. |t9. |tMirror any scanner "Barney Olfield" effects. |t10. |tPick your shadow directions very carefully. ) cl end ypos snap4 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|2Abbeon Cal|1 123 Gray Ave Santa Barbara CA 93101 (805) 966-0810 |Z |2Veeder Root|1 125 Powder Forest Dr Simsbury CT 06070 (860) 651-2700 |Z ) cl }} pop % temp for url list %% {{ /font3 /Helvetica-BoldOblique 9.5 gonzofont font3 /yinc 13 def xpos -26 add ypos % 0.25 setgray1 (|3|L|3Aviator's Guide to GPS... |1(Bill Clarke) |3GPS for Everyone: How the Global Positioning... |1(L. Larijani) |3GPS for Geodesy |1(Peter J. G. Teunissen) |3GPS for Land Surveyors |1(Jan Van Sickle) |3GPS Instant Navigation : A Practical... |1(Kevin Monahan) |3GPS Land Navigation; A Complete Guidebook... |1(M. Ferguson) |3GPS Made Easy : Using Global Positioning ... |1(Lawrence Letham) |3GPS Satellite Surveying |1(Alfred Leick ) |3Simple GPS Navigation; Sea, Air, Land... |1(Mik Chinery ) |3Understanding GPS: Principles and Applications |1(Elliott D. Kaplan) |3Using GPS |1(Conrad Dixon) |3Using GPS: Finding Your Way With the... |1(Bruce Grubbs) |3Wilderness Navigation : Finding Your Way... |1( Bob Burns) |3Yachtsman's GPS Handbook... |1(Colin Jones) |h |1For more details, see |/surl |3www.tinaja.com/amlink01.html|/amlink01 ) cl % }} pop %lockout %% special for combined list /cstretch 0.02 10 mul def /sstretch 0.0 10 mul def /kern 0.1 10 mul def /yinc 1.1 10 mul def /font0 /Helvetica-Bold [1.2 0 0 1 0 -0.2] gonzofont /font1 /Helvetica 0.75 10 mul gonzofont /font4 /Helvetica 0.6 gonzofont /font3 /Helvetica-Bold 0.75 10 mul gonzofont /font2 /Helvetica-Oblique 0.75 10 mul gonzofont /font5 /Helvetica-Bold 0.85 10 mul gonzofont /font6 /Helvetica [2 0 0 1.4 0 0] gonzofont /font7 /Helvetica-Oblique 0.75 gonzofont /font8 /Symbol 0.75 gonzofont font1 /yinc 0.9 10 mul def /kern 0.1 10 mul def %%%%%%%%%%%%%% /emacro {/yhold ypos def} def /fmacro {/ypos yhold def /xpos xpos 13.5 10 mul add def} def /cmacro {/xpos xpos 13.5 10 mul sub def} def /tabs [4 10 mul -2 10 mul] def /txtwide 30 10 mul def % 3.5 56.5 {{ % bypass xpos -12 add ypos 3.8 add (|t|t|5Papers|j\261 |h |3CFA - No Tricks|1, M. Hatley |2Electronics World/Wireless World|1, \ Dec 92, p1007. |h |3CFA - RIP?|1 Colin Davis, |2Electronics World/Wireless World|1, \ May 93 p405-407. |h |3A Conventional Explanation for the Crossed Field Antenna|1, \ M. Smith, |2Electronics Letters|1 #28, 13 Feb 92, p360-361. |h |3Fundamental Limitations of Small Antennas|1 H.A. Wheeler, \ |2Proc IRE|1 #35, 1947 p1479-1484. |h |3Is This Antenna For Real?|1 Chris Anderson, |2Radio World|1, \ March 31, 99, p26-29. |h |3Misguided CFA|1 K. Donaldson, |2Electronics World/Wirel\ ess World|1, May 93, p837-838 |h |3An Operational MF Antenna using Poynting Vector Synthesis|1 M. Hatley, \ |2Antprop Conf 7 part 2 #333 April 91 p645-648. |h |3Three MW Egyptian MW Broadcast Cross Field Antennas|1, Brian \ Stewart & Fathi Kabbary, |2NAB Convention|1 NAB99, Las Vegas, \ April 19, 99. |t|t|5Critique|j\261 |h|3 |3Electronics World|j/Wireless World:|1 Mar 1989, page \ 216; Nov 1989, page 1109; March 1990, page 253; Dec \ 1990, page 1094; June 1991, page 476; July 1992, letters; \ May 1993, page 405; Sept 1993, page 747; Dec \ 1993, letters. |t|t|5Patents|j\261 |h|3 |3US# 5,155,495|1 View through the link at |2www.tinaja.com/patnt01.html|1 |t|t|5Construction Plans|j\261 |h|3 |3Antennax|1 online magazine at |2www.antennax.com|1 |t|t|5Newsgroups|j\261 |h|3 |3rec.radio.amateur.antenna |3sci.physics.electromag |3uk.radio.amateur )cl }} % end bypass } 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|2Arcata ImageViewer|1 600 F Street Arcata CA 95521 (800) 822-9085 |2|/surl www.arcatapet.com|/arcata |Z |2Butterworth-Heinemann|1 225 Wildwood Ave Woburn MA 01801 (800) 366-2665 |2|/surl www.bh.com|/butter |Z |2Gerber Scientific|1 151 Batson Dr Mancheste CT 06040 (800) 22-7446 |2|/surl www.gspinc.com|/gerber |Z |2HP/Test & Measurement|1 PO Box 50637 Palo Alto CA 94303 (415) 857-1501 |2|/surl www.hp.com/go/tmc99|/hp1 |Z |2InsulTab|1 50 Everberg Rd Woburn MA 01801 (800) 468-4822 |2|/surl www.insultab.com|/insultab |Z |2Lindsay Publications|1 PO Box 538 Bradley IL 60915 (815) 935-5353 |2|/surl www.lindsaybks.com|/lindsay |Z |2Map One|1 PO Box 999 Dewey AZ 86327 (520) 632-8774 |2|/surl www.mapone.com|/mapone |Z |2MD Industries|1 5 Revere Dr Northbrook IL 60062 (847) 498-1204 |2|/surl www.mdind.com|/mdind |Z |2National Instruments|1 11500 N Mopac Expwy Austin TX 78759 (512) 794-0100 |2|/surl www.natinst.com|/natinst |a |2Oricom Technologies|1 PO Box 68 Boulder CO 80306 (303) 449-6428 |2|/surl www.sni.net/~oricom|/oricom |Z |2Pericom|1 2380 Bering Drive San Jose CA 95131 (408) 435-0800 |2|/surl www.pericom.com|/pericom |Z |2Physik Instrumente|1 23 Midstate Dr Ste 212 Auburn MA 01501 (508) 832-3456 |/surl www.polytecpi.com|/physik |Z |2Gordon M Robineau|1 6181 S Randall Blvd #10 Tucson AZ 85706 (520) 573-9314 |Z |2Security Systems Intg|1 6151 Powers Ferry Rd NW Atlanta GA 30339 (770) 955-2500 |2|/surl www.securitysolutions.com|/security |Z |2SiRF Technology|1 3970 Freedom Cir Santa Clara CA 95054 (408) 980-4700 |2|/surl www.sirf.com|/sirf |Z |2Standard Microsystems|1 80 Arkay Dr Hauppauge NY 11788 (800) 443-SEMI |2|/surl www.smsc.com|/standard |Z |2Synergetics|1 Box 809 Thatcher AZ 85552 (520) 428-4073 |2|/surl www.tinaja.com|1|/synlib01 |Z |2Vacuum & Thin Film|1 17730 W Peterson Rd Libertyville IL 60048 (847) 362-8711 |2|/surl www.ihspubs.com|/vacuum ) 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 email all your US |2Tech Musings|1 questions to: |h Don Lancaster |2Synergetics|1 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 THiS NEW PCD100 PRINTED CIRCUIT DRILL is largely gravity powered! \ Differential stepper motions move your pc board under a fixed self-advancing drill or a \ plotting pen.)def /f2name (Fig. 2 \261 THE ELECTRICAL INTERFACE for the PCD100. A parallel port and \ DOS software is currently used.) def /f3name (Fig.3 \261 POSTSCRIPT CAN EAILY CONTROL ANY PLOTTER or XY Table by sending \ a special utility to Acrobat Distiller. Here is a three inch circle example. \ See |/surl www.tinaja.com/flut01.html|/flut01 for full details.) def /f4name (Fig. 4 \261 MY SECRETS for improving scanner "photographs".) def /ad1name ( ) def % dummy /s1name (RECOMMENDED GPS NAVIGATION BOOKS)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.899 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 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 end up as 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.899 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 email all your US |2Tech Musings|1 questions to: |h Don Lancaster |2Synergetics|1 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 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 %%%%%%%%%%%%%%%%%%%%%%%%%%%% % dictionary method << /keely1 (http://www.keelynet.com/interact/archive/date.htm) /beaty1 (http://www.eskimo.com/~bilb/freenrgl/fnrga) /arcata (http://www.arcatapet.com) /butter (http://www.bh.com) /gerber( http://www.gspinc.com) /hp1 (http://www.hp.com/go/tmc99) /insultab (http://www.insultab.com) /mapone (http://www.mapone.com) /mdind (http://www.mdind.com) /natinst (http://www.natinst.com) /oricom (http://www.sni.net/~oricom) /pericom (http://www.pericom.com) /physik (http://www.polytecpi.com) /security (http://www.securitysolutions.com) /sirf (http://www.sirf.com) /standard (http://www.smsc.com) /vacuum (http://www.ihspubs.com) /usgsmaps (http://greenwood.cr.usgs.gov) /seti (http://setiathome.ssl.berkeley.edu/stats/totals.html) /ghost (http://www.tinaja.com/post01.html) >> { mark exch /eurl cvx ] cvx def }forall % patch definitions... /uniscan {(http://www.uniscan.co.uk/pr02.htm) eurl} def /bath {(http://www.bath.ac.uk/~chsacf/solartron/electro/html/int.htm) eurl} def /intermarket {(http://www.intermarket.net/~don/dschlamp.html) eurl} def /tno {(http://www.tno.nl/instit/kribc/ca-den_helder/caeis.html) eurl} def /isea {(http://www.rwth-aachen.de/isea/Ww/texte/abstract/ka_vrla.html) eurl} def /minerva {(http://minerva.acc.virginia.edu/~cese/taylor/eisshort.html) eurl} def /questlink {(http://www.questlink.com) eurl} def /mailnasa {(mailto:corrosion@ksc.nasa.gov) eurl} def /homepower {(http://www.homepower.com) eurl} def /transtronics {(http://www.transtronics.com) eurl} def /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 % 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 /imagimag /resbn90 /bustpat /resbn66 ] {setglib} forall [ /magsn01 /patnt01 /ismm01 /ismm01 /libry01 /blat01 /advt01 /barg01 /amlink01 /muse01 /flut01 /post01 /bod01 /scweb01 /tinaja01 /synlib01 /info01 /bargos01 /picup01 /webwb01 /golly01 /santa01 /synlib01 /acrob01 /consul01 /resbn01 /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 37 def % adjust for width of drop cap /sstretch 0 def % looser still /font0 /Times-Bold [50 0 0 54.1 0 -32] gonzofont % normal %/font0 /Times-Bold [45 0 0 54.1 0 -32] gonzofont % narrow M /font: /Times-Roman [6.5 0 0 6.5 -2 4 ] gonzofont % squared /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 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 /hhhxx {/ypos ypos 5 add store} def % wierd patch startgonzo |a A |b s I might have mentioned a time or two before, I am \ utterly fascinated by all the web's bizarre "free energy" \ sites. Weirdness reigns supreme.|p Such as Jerry Decker's |2KeelyNet Mail List|1 up at \ |/surl |2keelynet.com/interact/|/keely1 |/surl archive/date.htm|1|/keely1 . Or \ try Bill \ Beaty's |2Freenrg-l|1 mailing list at \ |/surl |2www.eskim|/beaty1 |/surl o.com/~bilb/freenrgl/fnrga|1|/beaty1 Once you get past all of the scams, urban lore, or \ wishful thinking, most of pseudoscience quickly \ classifies itself into |/tinton1 |2labwork \ so mesmerizingly |/tinton1 awful \ that it is not even wrong|1|/tintoff . Or an utter disdain for \ scientific principles not even \ hopeful of working up to total cluelessness. \ Or simply being part of a large medical problem (such \ as acute recto-crainial inversion) or having some other \ hidden agenda.|p I strongly believe that finding a new source of unlimited \ free energy would be one of the most heinous imaginable \ crimes against humanity. For the binge that is sure to \ result clearly would turn the planet into a cinder. \ Fortunately, this flat out ain't gonna happen. Further, it appears to me the key point these folks \ all completely miss about free energy is simply this: The \ conservation of energy and thermo "laws" are much \ more than "laws". They are also |2theorems|1. It turns out that a |2theorem|1 is an |2unavoidable \ consequence|1 of initial principles. As such, \ the thermo and related "laws" |2absolutely \ guarantee|1 us that there is |2no possible|1 overunity \ combination of ordinary motors and magnets. Nor from any \ mechanical arrangement of balls, wheels, slides, weights, or levers. Nor \ from any fully accounted heat pump. Nor from miracle \ carburetors. Nor will anything special happen to a wire \ if you happen to make it a lot longer than usual. Outside of needing to understand fancier math. Thankfully, these theorems free us up to spend all our time \ researching more useful stuff. Two key points are \ that |2an hour in the library is worth a month in the \ lab|1. And also that "real science" progresses by |2standing \ on the shoulders of giants|1. Plus, of course, that extraordinary claims demand \ extraordinary proof. Now, yes, those fundamental first principles could be challenged. But because they're reverified in \ zillons of ways each day, any exceptions are \ likely to be at extremes of pressure, size, temperature, \ or time. The whole trick when evaluating pseudoscience is to carefully \ separate the useful adjuncts towards porcine whole body \ cleanliness from the total hogwash. Lots more on this is up at \ |/surl |2www.tinaja.com/pseudo01.html|1|/pseudo01 |c A New Printed Circuit Drill |d Gordon Robineau has developed an ultra low cost way \ to plot and drill hobby and prototype printed circuit \ boards. He offers |4PCD100|1 systems, kits, and \ consulting. Prices start at |4$200|1. While not \ particularly rugged, fast, or very precise, these solutions \ certainly are exceptionally innovative and elegantly \ simple. Figure one shows us his general scheme. Gravity \ plays a big role! The concept works by leaving the pen \ or drill centered and stationary while moving the \ printed circuit board in suitable |4X|1 and |4Y|1 \ directions. A solid base gets supported on a steep |460|1 degree \ angle. There is one single brass tube "monorail" going \ down the board center. This monorail supports a |2fixed|1 \ combination pen and drill holder. The custom electric \ drill is miniature and self-advances on power; the pens \ also "pen down" on applied power. A \ plain old relay contact replaces any need for a solenoid. A full width horizontal aluminum bar then rides up and down \ under the monorail. A smaller slider goes back and forth \ on this horizontal bar. The printed circuit board \ gets taped to this slider. The \ X board motion gets done by sliding back and \ forth. The Y board motion gets done by lifting or \ lowering the horizontal bar. Two smallish steppers control the motions by way of plain old \ fishing line strings, while gravity keeps the needed tension on \ everything. The strings go through end rollers on the \ horizontal bar and connect to slider ends. The \ steppers always will work together. When both step in the \ |2same|1 direction, the board raises or lowers. Should \ both step in the |2opposite|1 direction, the board moves \ left or right. Combined motions are easily done by \ selecting the needed number of |2differential|1 \ steps. Figure two shows the schematic of the interface. All \ the hard work gets done by the |4PC|1 host. The interface is \ about as simple and as dumb as you can get. One \ chip "amplifies" the parallel port signals \ to control your stepper phases. A power supply and \ |4NMOS|1 driver transistor controls the self-advancing \ drill motor or the pen up-down Z motion. Sadly, the software is |4DOS|1 based. Their included \ floppy disk software accepts simplified |/surl |2Gerber|1|/gerber or \ |/surl |4HPGL|1|/hp1 files and converts them into needed stepper, \ drill, or pen motions. A slide down "boresight" \ alignment target automatically does alignment \ to take care of a board edge not being \ truly parallel to the desired foil pattern. A seventy cent baby |4PIC|1 added to the interface sure would add bunches for \ independence and compatibility with newer operating systems. |c Now, Make it Speak PostScript |d Sure thing. Trivial even. While |4PC|1 drills and such \ can use |/surl |2Gerber|1|/gerber file formats or |/surl |2Hewlett-Packard|1|/hp1 \ |4HPGL|1 plotting languages, I've found that PostScript \ is far more flexible and way more powerful. \ Particularly if lots of fancy fonts are involved. Or \ exotic transformations. The trick is to send your PostScript code to a special \ utility that is sent to Adobe |/surl |2Acrobat|1|/adobe or \ |/surl |2GhostScript|1|/ghost . This utility accepts the normal \ PostScript vector commands and reduces them to elemental \ horizontal and vertical steps. By using \ PostScript's powerful |2pathforall|1 and |2flattenpath|1 procs. Your output can be a simple and elemental |2meta \ language|1. Such as the ASCII numerals |4"0"|1 througn \ |4"7"|1 for east through northeast on through southeast, \ |4"H" for home, |4"U"|1 for pen up, |4"D"|1 for pen \ down, |4"X"|1 for your debugging break, and |4"Q"|1 for \ quit. Modifications to this utility can directly generate \ |4PCD100|1 commands. Uh, figure three shows us what a possible three inch circle \ might look like. Full source code, \ tutorials, and other insider details can be found at \ |/surl |2www.tinaja.com/flut01.html|1|/flut01 More on PostScript is downloadable from my \ |/surl |2www.tinaja.com/post01.html|1|/post01 . Consulting services are \ offered per |/surl |2www.tinaja.com/consul01.html|1|/consul01 or at \ |/surl |2www.tinaja.com/info01.html|1|/info01 . |c More on Scanner "Photographs" |d Last month, we saw how creative use of a better quality \ scanner can give you ridiculously better "photos" \ than a digital camera. Resolution can be \ |2hundreds|1 of times higher. To do this, you carefully support \ and align an object, scan it, and then "airbrush" edit \ it using |2Paint|1 or |2PhotoShop|1. Complete details are now found in |/surl |2www.tinaja.com/blat01.html|1|/blat01 \ and in my |/surl |2http://www.tinaja.com/glib/imagi|/imagimag |/surl mag.pdf|1|/imagimag Dozens \ of astounding results can now be viewed by going to my \ |/surl |2www.tinaja.com/barg01.html|1|/barg01 Your only tiny downside is \ that the process is incredibly addictive. After playing \ with these techniques for a while, I've come up with \ several additional insider secrets\274|z |/tinton1 |6Use pixel locking|j\261|1|/tintoff Try to get |2exactly|1 \ horizontal and vertical lines. Use a mechanic's \ combination square for initial subject alignment. Then you'll \ "normalize" a small portion of some edge and "chase" it \ along as far as you can. Wholesale move the rest of your \ image up or down a pixel as needed for perfect \ alignment. |h|z |/tinton1 |6Crowd all shadows|j\261|1|/tintoff Shadows almost always will be \ way too large, way too many, and way too dark. Expand \ the "brighter" portions of the subject so that the last \ "brown" line moves well over most of the "black" ones. \ Or eliminate shadows entirely if they do not add to your \ effect. Similarly, the darkest grays on a meter face can \ usually get replaced with fewer and significantly lighter ones. |h|z |/tinton1 |6Don't retouch lettering!|j\261|1|/tintoff The results will \ almost always be bad enough to call attention to \ themselves. Instead, make only the most minor and most \ essential adjustments. Take half and leave half. If \ the lettering is really bad, replace it entirely. I will \ often write new lettering in raw PostScript using a \ multiple master font that has adjustable size and weight. I'll \ then let Acrobat Distiller color, size, and anti-alias \ the callouts. A screen grabber puts you back into |2Paint|1. |/tinton1 |6Brighten and sharpen selectively|j\261|1|/tintoff If something \ is too dark or too fuzzy, I will slide it on over into \ the Arcata |2ImageViewer|1, and then selectively deal with \ it there. What the photo folks call dodging \ and burning. But note that a little sharpening goes a \ very long way. Stay on the fuzzy side or the final results may \ have garish "sugar" in them. |h|z |/tinton1 |6Invent if really needed|j\261|1|/tintoff Create any essential fine \ detail from scratch if you have to. Pixel locked and \ totally controlled stuff such as thermometer gradiations, \ edge thread details, or complex sensor structures. A hand \ done antialiased |43x5|1 or |45x7|1 lettering can \ sometimes work wonders. But a \ little of this goes a very long way. |h|z |/tinton1 |6Work in pieces|j\261|1|/tintoff First to get an object to fit \ the scanner. And second to get your lettering as close \ to the glass as possible. Ferinstance, on a squirrel \ cage blower, I took it all apart and scanned the motor \ separate from the cage. Two other scans were used to \ optimize the look of the wiring, and a portion of the \ label was selectively sharpened as an overlay. If \ removing knobs takes you closer to the glass, do so. \ Then scan the knobs later. |h|z |/tinton1 |6Use symmetry and repetition|j\261|1|/tintoff Once you have got one \ corner of an object looking the way you want it to, flip \ it horizontally and then vertically to take care of the \ other three. If your lighting on something cylindrical is \ poor, expand the "good" side of the best lines, \ duplicate them vertically, and then mirror the entire \ result. |h|z |/tinton1 |6Experiment on the side|j\261|1|/tintoff The greatest ideas \ have a way of turning sour, so always tow a copy of any \ detail you are working on to a background area, improve \ it, and tow it back. Be sure to resave often, \ preferably to a |4CD ROM|1 Save any details that you can \ reuse, such as screws, knobs, line cords, other \ fasteners, fuses, or feet. |h|z |/tinton1 |6Avoid the "Barney Olfield" Effect|j\261|1|/tintoff Early photos \ of moving race cars had elliptical wheels. Caused by their \ camera's focal plane shutter seeing the top of the wheel \ after the bottom. Moving scanners could also have a \ disconcerting habit of showing only one "side" of a knob \ or support or whatever. Get around this by taking the \ good "half" of the knob, mirror copy it, and make it \ "straight on". |h|z |/tinton1 |6Watch shadow directions|j\261|1|/tintoff Similarly, scanners \ tend to "throw" shadows on only one side of knobs or \ supports. Pick your scanning direction |2so the shadows \ all stay out of the lettering|1.|p But the ultimate key test of your airbrush work is that \ |2it should seem to vanish without a trace|1. \ Leaving you with appropriate and "accurate" results that \ do not in any manner call attention to themselves. Your \ whole goal here is |2not|1 to be noticed! I've \ summarized some of these guidelines for you in figure \ four. Training and consulting services are available for \ this exciting new technique. For ongoing details, refer to \ |/surl |2www.tinaja.com/info01.html|1|/info01 |c Water Soluble Plastics |d In my surplus wanderings, I have come across a great \ heaping pile of |2water soluble|1 plastic film. These \ are intended for hospital laundry bags and are resold by \ |/surl |5M.D. |2Industries|1|/mdind . They are easily cut with scissors \ or a paper cutter and are "somewhat" heat sealable. They \ are mildly translucent. You can tell roughly what \ is in them but cannot read fine print. Thickness is a mil or two. They are "heavy duty" style and are made from a \ polyvinyl alcohol. They dissolve in cold water above \ |440|1 degrees Farenheit. These cry out for all sorts of oddly unintended uses. Hot tub \ guest swim suits, ferinstance. Or tie some around a \ microswitch for a flood alarm or a rain detector. Or \ perhaps as packages for bath salts or some dye. Any of a dozen or more "magic" tricks come to mind. \ Maybe a few possible greenhouse or other ag uses. Or \ other places where you don't want to handle something. \ I'm not sure if you can dissolve the films and then \ reuse the solution somehow. Cost is quite low, especially when you only use a few \ square inches. What uses can you think up for these that give new depth \ of meaning to "diabolically fiendish"? Email me at \ |/surl |2don@tinaja.com|1|/maildon should you want to play with any of this \ neat stuff. Or see \ |/surl |2www.tinaja.com/bargos01.html|1|/bargos01 |c Some GPS Books |d |5GPS|1 is an acronym for the |2Global Positioning Satellites|1, \ a collection of |424|1 wandering satellites which give \ you navigation, altitude, time, and speed info. Anywhere \ in the world. To eighty foot accuracy with lower \ cost techniques. Fancier schemes let you hit aircraft \ landing precision and sub-centimeter surveyor \ accuracy. I've gathered together a listing of some of the better \ |4GPS|1 books for you as this month's resource sidebar. Tutorials on |4GPS|1 can be found in \ |/surl |2www.tinaja.com/resbn01.html|1|/resbn01 and at \ |/surl |2www.tinaja.com/glib/resbn90.pdf|1|/resbn90 |c New Tech Lit |d From |/surl |2Standard Microsystms|1|/standard , a new |4CD ROM|1 product \ catalog. That focuses on local area networking, data \ comm, and |4I/O|1 controllers. From |/surl |2Hewlett \ Packard|1|/hp1 , their latest |2Test and Measurement|1 \ catalog. From |/surl |2Physik|/physik |/surl Instrumente|1|/physik , a catalog \ on piezo and other micropositioning \ mechanisms. From |/surl |2Pericom|1|/pericom , application notes on their \ bus switches, with emphasis on video switching apps. |4USGS|1 topo maps are finally free online. \ At |/surl |2greenwood.cr.usgs.gov|1|/usgsmaps Many of these are \ newly available in Acrobat |4PDF|1 format. While low cost \ collections of maps on |4CD ROM|1 are offered by Tom \ Oliver's |2Map One|1 at, of all places \ |/surl |2www.mapone.com|1|/mapone From |/surl |5SiRF|2 Technology|1|/sirf , a white paper on their new \ |4GPS|1 technology that seems to effectively solve \ certain "urban canyon" problems. By way of Dan Michael's |/surl |2Oricom|/oricom |/surl Technologies|1|/oricom , an assortment \ of |2One Hour Protoboards|1. These seem well suited for \ most |4PIC|1 and similar size projects. A number of \ ready-to-go designs are also available on their \ |/surl |2www.sni.net/~oricom|1|/oricom website.|/red The |4SETI|1 at home project seems to be smashing most \ records lately for distributed computing. Uh, as of this writing, \ |/tinton1 |2twenty millennia|1|/tintoff (!) of prime computing time has \ been devoted to this project. As we saw last month, you \ can participate or pick up details at \ |/surl |2setiathome.ssl.berkeley.edu/stats/t|/seti |/surl otals.html|1|/seti |/beige A curious update to last month's column on hot tub \ economics: Most conventional hot tub thermometers have a \ large thermal slug in them. To prevent their temperature \ changing much while you're reading them. The fifteen \ minute or so delay can cause underreporting \ during warmup. If you do not allow for this, the tub \ may appear to do its last few degrees of heating much \ faster than you'd expect. And may overheat. Free samples of sleeving and heat shrinkable tubing are \ offered from |/surl |2Insul Tab|1|/insultab . A free graphic instrument programming \ |5LabView|1 |2Evaluation Package|1 \ from |/surl |2National Instruments|1|/natinst . Our featured trade journals include \ |/surl |2Security Systems Integration|1|/security plus |2Vacuum & Thin \ Film|1. The latest "new-old" books from |/surl |2Lindsay Publications|1|/lindsay \ include |2Early Die Casting|1 and |2Hot Air Engines \ Vol 2|1. For fast access, click the banner on my \ website. A new engineering book catalog by \ |/surl |2Butterworth Heinemann|1|/butter . Instant info on \ bunches of books that I've personally recommended \ at |/surl |2www.tinaja.com/amlink01.html|1|/amlink01 For all the fundamentals of digital integrated circuits, \ do check into my |/surl |5CMOS|1|/synlib01 and |/surl |5TTL|1 |2Cookbooks|1|/synlib01 . Either \ by themselves or as part of my bargain priced \ |/surl |2Lancaster Classics Library|1|/synlib01 . Per my nearby \ |/surl |2Synergetics|1|/synlib01 ad. Some of the really wild new stuff up at \ |/surl |2www.tinaja.com/barg01.html|1|/barg01 now includes hospital grade \ physical therapy machines, premium quality flags from \ odd countries you never heard of, precision airflow \ meters, several superb pressure and humidity sensors, immersion \ thermocouples, and great heaping bunches more. Catalogs about our products and services can be downloaded \ directly from |/surl |2www.tinaja.com/synlib01.html|1|/synlib01 As usual, most of the mentioned items are in our \ |2Names & Numbers|1 or |5GPS|2 Books|1 sidebars. A \ no charge |4US|1 technical helpline is offered per the \ nearby box. Be sure to include your email address if you \ expect a personal reply. Let's hear from you. There sure are some exciting possibilities here.|/tinton |-F|1 |x 57 348 58 sub menu8 showpage % this optionally displays the figures /prodart false def prodart { % redefine figures /fig1x {40 50 2colwide f1h true true /f1name /figure1 stdmusefig} def % link /fig2x {40 50 2colwide f2h true true /f2name /figure2 stdmusefig} def % link /fig3x {40 50 3colwide f3h true true /f3name /figure3 stdmusefig} def % link /fig4x {40 50 2colwide f4h true true /f4name /figure4 graymusefig} 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 % /narrowfig 50 def /grayshade 0.899 def 1.5 dup scale {0 0 0.9 fig1x} exec showpage /narrowfig 0 def % landscape -35 0 translate 1.5 dup scale {0 0 0.9 fig2x} exec showpage /narrowfig 0 def /narrowfig 0 def % 0 -20 translate landscape -35 0 translate 1.5 dup scale {0 0 0.9 fig3x} exec showpage /narrowfig 0 def %landscape -35 0 translate /narrowfig 50 def 1.5 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 % /narrowfig 0 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 % 0 -45 translate landscape -40 0 translate 1.5 dup scale {0 0 0.9 fig3x} exec showpage /narrowfig 0 def % landscape -35 0 translate /narrowfig 00 def 1.5 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