%! % Name of file: Tech Musings 147 Synchros and resolvers, 404 errors, listening to bats %%%%%%%%%%%% % VERY IMPORTANT FILE SPECIFIC NOTE: The files pix147-1.jpg and pix147-3.jpg are % required to run this program. Place their correct locations here using double % reverse slashes when one is intended... /pixfilename1 (C:\\Medocs\\Muse\\Muse 147\\pix147-1.jpg)def /pixfilename3 (C:\\Medocs\\Muse\\Muse 147\\pix147-3.jpg)def %%%%%%%%%%%%% % 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 34 mul def % height of figure one /f2h yinc 21 mul def % height of figure two /f3h yinc 21 mul def % height of figure three /f4h yinc 23 mul def % height of figure four /f5h yinc 34 mul def % height of figure five /f6h yinc 35 mul def % height of figure six /s1h yinc 24 mul def % height of custom sidebar /s2h yinc 41 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 stdmusefigwc} def % link /fig2 {cm1 cmt f2h sub yinc add 3 add 2colwide f2h true true /f2name /figure2 stdmusefig} def % link /fig3 {cm3 cmt f3h sub yinc add 3 add 1colwide f3h true true /f3name /figure3 stdmusefigwc} def % link /fig4 {cm1 cmb 2colwide f4h true true /f4name /figure4 stdmusefig} def % link /fig5 {cm2 cmt f5h sub yinc add 3 add 2colwide 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 % temporary stdmusefig with clip for pix /stdmusefigwc { /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 gsave % tempclip 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 grestore clip % temp for photos 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 33 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 0 store} {0 0 0.9 fig2} % {/narrowfig 0 store} {0 0 0.9 fig3} {0 0 0.9 fig4} % {0 -6 1 help} % temp help box ] % page two figures and control [ cm1 cmt f2h sub cmb f4h add {txw}] % column1 xpos ypos ylimit txtwide [ cm2 cmt f2h sub cmb f4h add {txw}] % column2 xpos ypos ylimit txtwide [ cm3 cmt f3h sub cmb {txw} ] % column3 xpos ypos ylimit txtwide ] [ [ {rightfooter} {rightheader} % {/narrowfig 0 store} % {0 0 0.9 fig3} {/narrowfig 0 store} { 0 0 0.9 fig5} % {0 -6 1 help} % temp help box {/narrowfig 0 store} % {0 0 0.9 fig5} ] % page three figures and control [ cm1 cmt cmb {txw}] % column1 ship [ cm2 cmt f5h sub cmb {txw}] % [ cm3 cmt f5h sub cmb {txw} ] % ] [ [{leftfooter} {leftheader} % { 0 0 0.9 fig4} {/namestretch 0 def} {narrowfig 30 store} {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 % [cm3 cmt s1h sub cmb {txw}] % for three wide ] [ [{rightfooter} {rightheader} {0 0 1 ad1} % was -33 positioning bug {/namestretch 0.8 def} {15 0 0.85 side2} % {0 0 0.9 fig5} ] % 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 ad here ] /adj {48 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 2000 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 2000 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 (Pendulum accelerometers Servo and feedback books Log file |j404|j error extractor How to listen in on bat nav Using synchros and selsyns ) def /author (Don Lancaster's) def /titlename (T|k|kech M|k|kusings) def /titledate (May, 2000 |j) def /leftheading ( Tech Musings) def /rightheading titledate def /columnum 147 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 % experimental box clipper to improve photos /clipinset 4 def % use -0.7 to repel boarders /cwidth {figwidth 2 sub} def /cheight { figheight titadjust sub 10 sub} def /clipthebox { 0 0 mt cheight 0.9 div dup pu cwidth 0.9 div pr pd closepath closepath clip gsave aqua 0.7 setgray1 fill grestore % tempcheck } def /figure1 { % name of textfile: muse fig 145.1 pendulum accellerometer photo % ............................ % figure 1 % save /snap1 exch def %%%%%%%%%%%%%%%%%%% 0 0 translate % position on box electronics begin % clipthebox /DeviceRGB setcolorspace % pick color model 0 -30 translate % set page position 325 412 scale % magnify unit square 1 dup scale % adjust % /infilename (C:\\windows\\desktop\\barro\\barro.jpg)def % filename % /pixfilename2 (C:\\Medocs\\Muse\\Muse 142\\pix143-2.jpg)def /infilename pixfilename1 def % note DOUBLE SLASHES in PS String! /infile infilename (r) file def % establish input read file /Data {infile /DCTDecode filter} def % define a data source << % start image dicationary /ImageType 1 % always one /Width 325 % JPEG width in pixels /Height 412 % JPEG height in pixels /ImageMatrix [325 0 0 -412 0 412 ] % see comments below /DataSource Data % proc to get filtered JPEG /BitsPerComponent 8 % color resolution /Decode [0 1 0 1 0 1] % per red book 4.10 >> image % call the image operator end ypos snap1 restore /ypos exch def } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /figure2imagehold { % name of textfile: muse fig 143.2 thermoelectrics of materials % ............................ % figure 2 % save /snap2 exch def %%%%%%%%%%%%%%%%%%% 8 15 translate % position on box electronics begin /DeviceRGB setcolorspace % pick color model 3 -6 translate % set page position 579 407 scale % magnify unit square 0.5 dup scale % /infilename (C:\\windows\\desktop\\barro\\barro.jpg)def % filename % /pixfilename2 (C:\\Medocs\\Muse\\Muse 142\\pix143-2.jpg)def /infilename pixfilename2 def % note DOUBLE SLASHES in PS String! /infile infilename (r) file def % establish input read file /Data {infile /DCTDecode filter} def % define a data source << % start image dicationary /ImageType 1 % always one /Width 579 % JPEG width in pixels /Height 407 % JPEG height in pixels /ImageMatrix [579 0 0 -407 0 407 ] % see comments below /DataSource Data % proc to get filtered JPEG /BitsPerComponent 8 % color resolution /Decode [0 1 0 1 0 1] % per red book 4.10 >> image % call the image operator end ypos snap2 restore /ypos exch def } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /figure2 { % name of textfile: muse fig 147.2 selsyn % ............................ % figure 2 % save /snap2 exch def %%%%%%%%%%%%%%%%%%% 28 22 translate % position on box 0.86 dup scale electronics begin bestgray aqua 0 0 10 setgrid % 33 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 /font- /Helvetica-Bold [0.4 0 0 0.55 0 0] gonzofont /kern 0.15 def /tabs [16.5] def /txtwide 29 def font1 /tabs [17.5] def font1 /yinc 0.9 def line1 bestgray black /font1 /Helvetica 0.9 gonzofont /yinc 1.1 def % for mag /insync {gsave translate line1 0.33 setgray1 0.8 setlinewidth 1 setlinecap 0 0 mt 6 l newpath 0 0 3 0 360 arc gsave grayshade setgray1 fill grestore 0.4 setlinewidth 0.45 setgray1 stroke % newpath 0 0 0.25 0 360 arc fill grayshade 0.3 sub setgray1 % rotor -1.6 -0.7 mt 1.7 pu 3.2 pr 1.7 pd closepath fill black line1 -2 0 mt 4 hcoil -2 0 mt 4 u 1 r 3.5 ux 1.8 0 mt 0.2 r 4 u 1 l 3.5 ux font1 0 8.5 (ac source) cc -5 -2 (input\n shaft) cc 4.5 -3.5 (synchro\ntransmitter) cc line1 gsave 3 {0 -3.2 mt 0.8 d gsave -90 rotate 4 hcoil grestore 0 -7.8 mt 1.2 d 120 rotate } repeat grestore grestore} def /outsync {gsave translate line1 0.33 setgray1 0.8 setlinewidth 1 setlinecap 0 0 mt 6 r 0.45 setgray1 newpath 0 0 3 0 360 arc gsave grayshade setgray1 fill grestore 0.4 setlinewidth 0.45 setgray1 stroke % newpath 0 0 0.25 0 360 arc fill grayshade 0.3 sub setgray1 % rotor -1.6 -0.7 mt 1.7 pu 3.2 pr 1.7 pd closepath fill black line1 1 setlinecap 1 setlinejoin -2 0 mt 4 hcoil -2 0 mt 4 u 1 r 3.5 ux 1.8 0 mt 0.2 r 4 u 1 l 3.5 ux font1 0 8.5 (ac source) cc 5 -2 (output\n shaft) cc -4.5 -3.5 (synchro\nreceiver) cc line1 gsave 3 {0 -3.2 mt 0.8 d gsave -90 rotate 4 hcoil grestore 0 -7.8 mt 1 dx 0.2 d 120 rotate } repeat grestore grestore} def line1 1 setlinecap 1 setlinejoin 0.2 14.5 mt 1.5 u 18 rx 1.5 d 15.8 14.5 mt 0.5 r 13 d 18 rx 13 u 0.5 l 8 10 insync 26 10 outsync 8 1 mt 1 d 18 r 1 u % bottom wire end ypos snap2 restore /ypos exch def } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /figure3 { % name of textfile: muse fig 143.2 synchro resolver photo % ............................ % figure 3 % save /snap3 exch def %%%%%%%%%%%%%%%%%%% 0 0 translate % position on box electronics begin % clipthebox /DeviceRGB setcolorspace % pick color model -10 -18 translate % set page position 393 485 scale % magnify unit square 1 dup scale % adjust 0.5 dup scale % /infilename (C:\\windows\\desktop\\barro\\barro.jpg)def % filename % /pixfilename2 (C:\\Medocs\\Muse\\Muse 142\\pix143-2.jpg)def /infilename pixfilename3 def % note DOUBLE SLASHES in PS String! /infile infilename (r) file def % establish input read file /Data {infile /DCTDecode filter} def % define a data source << % start image dicationary /ImageType 1 % always one /Width 393 % JPEG width in pixels /Height 485 % JPEG height in pixels /ImageMatrix [393 0 0 -485 0 485 ] % see comments below /DataSource Data % proc to get filtered JPEG /BitsPerComponent 8 % color resolution /Decode [0 1 0 1 0 1] % per red book 4.10 >> image % call the image operator end ypos snap3 restore /ypos exch def } def %%%%%% /figure4 { % name of textfile: muse fig 147.4 chirp % ............................ % figure 4 % save /snap4 exch def %%%%%%%%%%%%%%%%%%% 8 -30 translate % position on box electronics begin bestgray aqua 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 /font- /Helvetica-Bold [0.4 0 0 0.55 0 0] gonzofont /kern 0.1 def /tabs [16.5] def /txtwide 29 def font1 /tabs [17.5] def font1 /yinc 0.9 def line1 bestgray black /grayfill {gsave bl bb mt bh pu bw pr bh pd closepath lightgray fill grestore} def % grayfill /downarrow {gsave translate 1 setlinecap 1 setlinejoin 0 0 mt 4.8 1.5 rlineto 0.2 pu 1 pl 2.8 pu 7.6 pl 2.8 pd 1 pl 0.2 pd closepath gsave grayshade 0.10 sub setgray1 fill grestore 0.25 setgray1 line3 stroke grestore} def /chirphscale 1 8 div def /chirpvscale 2 def /sweeprate 0.3 def /chirp {gsave translate newpath grayshade 0.15 sub setgray1 -75 chirphscale mul 0 mt 150 chirphscale mul r black 1 setlinejoin -70.35 chirphscale mul -70.35 dup mul cos chirpvscale mul moveto -70.35 .1 70.35 { /val exch def val chirphscale mul val dup mul cos chirpvscale mul lineto } for gsave grayshade setgray1 fill grestore gsave newpath % put baseline in middle line1 0.8 settint grayshade 0.3 sub setgray1 -10 0 mt 20 r grestore aqua black line1 stroke grestore} def /sinxx {gsave translate line1 grayshade 0.15 sub setgray1 -4 0 mt 8 r 0.3 setgray1 -900 240 div -900 sin -900 div 300 mul -900 10 div cos mul moveto -900 3 900 { dup 0 eq {pop 0.0001} if /val exch def val 240 div val sin val div 300 mul val 10 div cos mul lineto } for gsave grayshade setgray1 fill grestore gsave newpath 0.8 settint grayshade 0.3 sub setgray1 -4 0 mt 8 r grayshade 0.2 sub setgray1 line1 stroke grestore % baseline in middle aqua black line1 stroke grestore} def aqua black newpath 16 13.5 downarrow newpath black 16 21.2 chirp 16 7.2 sinxx /cstretch 0.01 def /sstretch 0.01 def /txtwide 28 def /font1 /Helvetica 0.85 gonzofont font1 16 16.5 (Linear time delay -|jvs|j- frequency network) cc 16 24.5 (linear fm chirp) cc 16 4.3 (high resolution pulse) cc {{ 2 5 (In a CHIRP radar system, a frequency swept pulse is transmitted that permits both high power (for long range) and narrow time resolution (for closer target separation.) A \ linear delay-versus-frequency correlator converts the received target swept phase histories back into actual viewable or recordable target maps.) cf }} pop end ypos snap4 restore /ypos exch def } def /figure5 { % name of textfile: muse fig 145.4 pdf url grabber ps % ............................ % figure 5 % save /snap5 exch def %%%%%%%%%%%%%%%%%%% 0 0 translate % position on box electronics begin bestgray 0 0 10 setgrid % 50 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 /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 [20] def /txtwide 32 def font1 /tabs [17.5] def font1 /yinc 0.9 def 3 35 (|1% POSTSCRIPT "404" ERROR EXTRACTOR/REPORTER % ========================== % Copyright c 2000 by Don Lancaster and Syenrgetics, Box 809, Thatcher, AZ, 85552 % (520) 428-4073 |/surl don@tinaja.com|/maildon Web site: |/surl http://www.tinaja.com|/tinaja % Consulting services available per |/surl http://www.tinaja.com/info01.html|/info01 |h % All commercial rights and all electronic media rights fully reserved. % Personal use permitted provided header and entire file remains intact. % Linking welcome. Reposting expressly forbidden. |h % This PostScript-as-language routine reads an ISP log file and extracts all % "404" or FILE NOT FOUND entries into a separate analysis file. |h % To use this program, enter the full path sourcefile and target file names % and keyphrase below and resave. Then distill the file. |h % Note that a NO FILE PRODUCED message is normal and expected. |h % IMPORTANT: Be sure to use "\\\\\\\\" when you mean "\\\\\" in any PostScript string! |h /sourcefilename (C:\\\\\\\\medocs\\\\\\\\logfile.txt) def |t% sourcefile /targetfilename (C:\\\\\\\\medocs\\\\\\\\e404file.txt) def |t% output file /searchphrase (- 404) def |t% term to filter on /workstring 2000 string def |t% string holds analysis line /ws {writefile exch writestring} def |t% create output file object /addtooutfile {ws (\\\\n) ws} def |t% add line to output file /endoutfile {(\\\\n\\\\n) ws |t% close file when done writefile closefile} def |h % checkline tests to see if a dash followed by a space and a 404 is present... /checkline {dup searchphrase search {pop pop pop addtooutfile}{pop \ pop} ifelse} def |h % /startoutfile creates an output file object... /startoutfile {targetfilename (w+) file /writefile exch def(\\\\n\\\\nLines \ containing ) ws searchphrase ws ( in document ) ws sourcefilename ws \ (:\\\\n\\\\n) ws} def |h % Main loop reads one logfile line at a time for processing... /grabphrase {sourcefilename (r) file /workfile exch def startoutfile \ {mark workfile workstring readline {checkline}{exit} ifelse \ cleartomark} loop endoutfile pop} def |h grabphrase |t% This actually does it |h %% EOF ) cl end ypos snap5 restore /ypos exch def } def {/figure1 {} def % temp hunt for duplicate variables /figure2 {} def /figure3 {} def /figure4 {} def /figure5 {} def } pop %%%%%% %%%%%%%%%%%%%%%%%%% /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 1 sub def /yposhh ypos def /amacro {/xpos xpos 284 add store /ypos yposhh 50 add store} def /bmacro {/yinc yinc 2.12 add store} def % 0.9 dup scale % TEMP COMPRESS xpos -26 add ypos % 50 add (|3Analytic Feedback System Design |1( Peter Dorato ) |3Automatic Control:The Power of Feedback |1( T. Djaferis ) |3Control System Design Guide |1( George Ellis ) |3Control System Dynamics |1( Robert Clark ) |3D.C. Motors Speed Control Servo Systems\274 |1 ( R. Greene) |3Design of control systems for DC drives |1( A. Buxbaum ) |3Feedback Control of Dynamic Systems |1( Gene Franklin ) |3Feedback Control Systems |1( Charles Phillips ) |3Force and Touch Feedback for Virtual Reality ( G. Burdea ) |3Introduction To Feedback Control Systems |1( Pericles Emanuel ) |3Introduction to Servomechanism System Design |1( W. Humphrey ) |3Modern Control Systems |1( Richard Dorf ) |3Nonlinear and Optimal Control Systems |1( Thomas Vincent ) |3Principles of Process and Servo Control |1( D. Senko ) |3Quantitative Feedback Theory|1 ( Constantine H. Houpis ) |3Schaum's Outline of Feedback and Control Systems |1( Schaums ) |3Synchro and Resolver Conversion |1( Georffrey Boyes ) |h |1For more book 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|5Journals & Publications|j\261 |h |3Analytical Electrochemistry Electrochemistry Communications Journal of Electroanalytical Chemistry Journal of the Electrochemical Society Journal of Hydrogen Energy Journal of Power sources Surface Engineering & Applied Electrochemistry |h |t|t|5Newsgroups|j\261 |h|3 |3sci.chem.electrochem |3sci.chem.electrochem.battery |3sci.energy |3sci.energy.hydrogen, |h |t|t|5Books|j\261 |h|3 |3Analytic Feedback System Design |1( Peter Dorato ) |3Automatic Control:The Power of Feedback |1( T. Djaferis ) |3Control System Design Guide |1( George Ellis ) |3Control System Dynamics |1( Robert Clark ) |3D.C. Motors Speed Control Servo Systems\274 |1 ( R. Greene) |3Design of control systems for DC drives |1( A. Buxbaum ) |3Feedback Control of Dynamic Systems |1( Gene Franklin ) |3Feedback Control Systems |1( Charles Phillips ) |3Force and Touch Feedback for Virtual Reality ( G. Burdea ) |3Introduction To Feedback Control Systems |1( Pericles Emanuel ) |3Introduction to Servomechanism System Design |1( W. Humphrey ) |3Modern Control Systems |1( Richard Dorf ) |3Nonlinear and Optimal Control Systems |1( Thomas Vincent ) |3Principles of Process and Servo Control |1( D. Senko ) |3Quantitative Feedback Theory|1 ( Constantine H. Houpis ) |3Schaum's Outline of Feedback and Control Systems |1( Schaums ) |3Synchro and Resolver Conversion |1( Georffrey Boyes ) |h |1For more book details, see |3www.tinaja.com/amlink01.html )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 (|2Adobe Acrobat|1 1585 Charleston Rd Mountain View CA 94039 (800) 833-6687 |/surl |2www.adobe.com|1|/adobe |Z |2Analog Devices|1 PO Box 9106 Norwood MA 02062 (800) 262-5643 |/surl |2www.analog.com|1|/analog |Z |2Bat Conservation Intl|1 PO Box 162603 Austin TX 78716 (800) 538-BATS |/surl |2www.batcon.org|1|/bci |Z |2BookTech|1 401 N Broad St Philadelphia PA 19108 (215) 238-5300 |/surl |2www.booktechmag.com|/booktech |Z |2C&H Sales|1 PO Box 5356 Pasadena CA 91107 (800) 325-9465 |/surl |2aaaim.com/CandH/index.htm|1|/candh |Z |2Digital Graphics|1 2800 W Midway Blvd Broomfield CO 80020 (303) 469-5730 |/surl |2www.nbm.com/digitalgraphics|/digitalgraphics |Z |2Fair Radio Sales|1 Box 1105 Lima OH 45802 (419) 227-6573 |/surl |2www.fairradio.com|1|/fair |Z |2Kay Elemetrics|1 2 Bridgewater Lane Lincoln Park NJ 07035 (973) 628-6200 |/surl |2www.kayelemetrics.com|/kayel |Z |a |2Micro Linear|1 2092 Concourse Dr San Jose CA 95131 (408) 433-5200 |/surl |2www.microlinear.com|/microlinear |Z |2Motorola|1 5005 E McDowell Rd Phoenix AZ 85008 (800) 521-6274 |/surl |2www.motorola.com|/motorola |Z |2Natl Speleological Soc|1 Cave Ave Huntsville AL 35810 (205) 852-1300 |/surl |2www.caves.org|/nss |Z |2Print On Demand Business|1 445 Broad Hollow Rd Melville NY 11747 (800) 308-6397 |/surl |2www.podb.com|/podb |Z |2Servo Systems|1 115 Main Rd Box 97 Montville NJ 07045 (800) 922-1103 |/surl |2www.servosystems.com|1|/servo |Z |2Synergetics|1 Box 809 Thatcher, AZ 85552 (520) 428-4073 |/surl |2www.tinaja.com|1|/tinaja |Z |2Valiant RayCrete|1 6005 Hughes St San Diego CA 92115 (858) 679-2141 |/surl |2www.val-tech.com|/valiant |Z |2Worldwatch Institute|1 1776 Massachusetts Ave NW Washington DC 20036 (202) 452-1999 |/surl |2www.worldwatch.org|/world |Z ) 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 AN OLDER MILITARY ACCELEROMETER that makes use of \ a pendulum coupled to a synchro transmitter.)def /f2name (Fig. 2 \261 A SELSYN SYSTEM consists of a synchro transmitter and \ a synchro receiver. The output shaft position follows the input.) def /f3name (Fig. 3 \261 SYNCHRO TRANSMITTER used to sense shaft position.)def /f4name (Fig. 4 \261 A BAT'S CHIRP uses this sophisticated Fourier Transform \ scheme to dramatically improve its nav resolution.) def /f5name (Fig. 5 \261 POSTSCRIPT CODE to extract 404 log error messages.) def /ad1name ( ) def % dummy /s1name (SOME SERVO AND FEEDBACK 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 31 add 3 add (ad processing at ) == 2 copy == pop pop 0 0 % temp 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 /snap5xx exch def %%%%%%%%%%%%%%%%%%% electronics begin end ypos snap5xx 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 2000 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 2000 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 8 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 22 add (ad processing at ) == 2 copy == == pop pop 0 0 % temp translate % this one? 0.95 0.915 scale %%%% This code puts in the reader service number %%%% /readerservicenumber 146 def /squashad true def squashad {1 0.80 scale} if /height 693 114 add 60 add def % stretched twice /width1 165 def /sidethk 4 def /botheight 54 def /topheight 33 def /outrad 10 def /inrad 5 def /pm 0 def /pmnorm 0 def %%%%%%%%%%%%%% KEYSTONE STUFF %%%%%%%%%%%%%%%%%%%%%%% % this is a repeat of the GONZO13B callout width proc ... gonzo begin /endtheline {/curwide txtwide roomleft sub def justx cvx exec oktoprint {printline} if} bind def /cw {save /snapc1 exch def /oktoadvance false def /oktoprint false def /linestring linestring2 def /justx (justL) def 3 1 roll /ypos exch def /xpos exch def stringgonzo curwide snapc1 restore} def end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % This is a subtle correction to the gonzo fill justify that makes % txtwide slightly more precise ... gonzo begin /reallyjustF {swallowandhang roomleft cstretch add numchars 1 sub numspaces spacecharratio mul add dup 0 eq {pop 0.001} if div dup cstretch add /cfix exch def spacecharratio mul sstretch add /sfix exch def /xfix 0 def /yfix 0 def} bind def % unconditional justF end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % KEYSTONE STUFF STARTS HERE gonzo begin % This is the core keystone code routine. It works by taking an average % of the first two and last two string lengths to determine the keystone % slope, increment, and starting width. It then checks the length of % each line and extends the starting width as needed so everything fits. /keyproc {/kadj exch def /msg2 exch def /yy1 exch def /xx1 exch def mark {msg2 (\n) search {exch pop exch /msg2 exch def dup length 0 le {pop} if}{dup length 0 le {pop} if exit} ifelse} loop ] /karray exch def 0 0 karray 0 get cw 0 0 karray 1 get cw add 2 div dup 0 0 karray dup length 1 sub get cw 0 0 karray dup length 2 sub get cw add 2 div sub neg karray length 1 sub div dup /kinc exch def 2 div sub /kstart exch def /txtwide 10000 def 0 0 1 karray length 1 sub {/kpn exch def 0 0 karray kpn get cw kstart kinc kpn mul add sub 2 copy lt {exch} if pop} for kstart add 1.01 mul dup /kstart exch def /txtwide exch def /justifylastline true def 0 1 karray length 1 sub { /posn exch def yy1 xx1 kstart kadj exch posn karray exch get cf /txtwide txtwide kinc add def /xx1 xx1 kinc kadj def /yy1 yy1 yinc sub def} for} def % these are the three keystone routines. Use xpos ypos true (msg strings) % cck, etc. true for keystone; false for ordinary justify. /cck {save /keysnap exch def exch {{2 div sub} keyproc} {cc} ifelse keysnap restore} def % callout centered keystone /clk {save /keysnap exch def exch {{pop} keyproc} {cl} ifelse keysnap restore} def % callout left keystone /crk {save /keysnap exch def exch {{sub} keyproc} {cr} ifelse keysnap restore} def % callout right keystone end % close gonzo dictionary %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % outside box 0 0 width1 height 5 roundbox showadgrays {0.3}{0} ifelse setgray % for brown border fill % inside box sidethk botheight width1 sidethk 2 mul sub height topheight sub botheight sub inrad roundbox showadgrays {grayshade setgray}{white} ifelse fill black % shade for web /cstretch 0.7 def /sstretch 1.2 def /font1 /Revue 10 gonzofont /font3 /Revue 9 gonzofont /font4 /Revue [9 0 0 9.05 0 1] gonzofont /font9 /Helvetica-Bold 6.5 gonzofont /font2 /Revue 14 gonzofont font1 % adjust center /bc bc sidethk 2 div add def % top lettering white bc bt 22 add (|1new from) cc bc bt 6 add (|2DON LANCASTER) cc bc -17 (|2SYNERGETICS) cc /yinc 10 def bc -28 (|3B|1ox |3809-EN|1 |1Thatcher, |3AZ 85552 |4(|3520|4)|3 428-4073|1) cc /cstretch 0.1 def /sstretch 0.1 def /font5 /Helvetica-Narrow 8 gonzofont /font6 /Helvetica-Narrow-Bold 10 gonzofont /font7 /Helvetica 6 gonzofont /font8 /Helvetica-Narrow-Bold 8 gonzofont /font: /Helvetica-Bold [5 0 0 4.95 0 6] gonzofont % uneven for distillery /font- /Helvetica-Narrow-Oblique 8 gonzofont black 3 3 (|7FREE US VOICE HELPLINE) cl br 3 sub 3 (|7VISA|j/|jMC) cr /xpos 4 def /txtwide br 8 sub def /yinc 8.5 def /ypos bt 15.5 sub def /amacro {/ypos ypos 2 add def} def /cmacro {/ypos ypos 1 add def} def /kern 0.5 def /bw width1 sidethk 2 mul sub def % obtuse code avoids the arcto bug /bmacro { gsave showadgrays {0.3}{0} ifelse setgray % for brown border -0.45 ypos translate 0 0 mt 5 [-0.5 30 -0.5 3 bw 1 add 3 bw 1 add 30 ] roundpath 0 -31 rlineto bw 1 add neg 0 rlineto closepath fill newpath 0 0 mt 5 [-0.5 -30 -0.5 -3 bw 1 add -3 bw 1 add -30 ] roundpath 0 31 rlineto bw 1 add neg 0 rlineto closepath fill grestore } def /Umacro {ypos} def xpos ypos (|/tinton1 |C|6A|kCTIVE|j|j FILTER|j|j COOKBOOK |h|a |F|5The sixteenth|k (!|j)|k printing of Don's bible on analog op-amp lowpass, bandpass, and highpass active filters. De-mystified instant designs. |8 $28.50|1 |b |a |h |/tinton1 |C|6RESEARCH|j|j INFOPACKS |h|F|a |5Don's instant cash-and-carry flat rate consulting service. Ask any reasonable technical \ question for a detailed analysis and complete report. See |/surl www.tinaja.com|j/|jinfo01|/info01g \ for specifics. \ |8$79.00|5 |b |a |h |C|/tinton1 |6CMOS|j|j AND|j|j TTL|j|j COOKBOOKS |h|a |F|5Millions of copies in print worldwide. |8THE|5 two books for digital integrated circuit fundamentals. About as hands-on as you can get. |8$28.50 |5each.|1 |b |a |h |/tinton1 |C|6INCREDIBLE|j|j SECRET |h|c |/tinton1 MONEY|j|j MACHINE|j|j II |5|h|F|a Updated 2nd edition of Don's classic on setting up your own technical or craft venture. |8$18.50|1 |b |a |h |/tinton1 |C|6LANCASTER|j|j CLASSICS|j|j LIBRARY |5|h|a|F Don's best early stuff at a bargain price. Includes the CMOS Cookbook, The TTL Cookbook, Active Filter Cookbook, PostScript video, Case Against Patents, Incredible Secret Money Machine II, and \ Hardware \ Hacker II reprints. |8$119.50|1 |b |a |h |/tinton1 |C|6L|kOTS|j|j OF|j|j OTHER|j|j GOODIES |5|h|a) stringgonzo %%%%%%%%%%%%%%%%%%%%%%%% % (A) WIDTH CALCULATIONS 2.20.91 % A new curwide variable lets you calculate the gonzo string % width independent of printing it. Handy for menu justify, etc.. % Use has to be bracketed with /oktoprint false def /oktoadvance % false def --- stuff --- and then true. Works with any justify mode. % make this change to main code so lengths can be extracted. Note that % roomleft gets flushed at line end. gonzo begin /endtheline {/curwide txtwide roomleft sub def justx cvx exec oktoprint {printline} if} bind def % calloutwidth calculates only the width of the string, returning it % to the top of the stack. For consistency with other callouts, use % 0 0 (string) cw. This INCLUDES all stretching and font changes! /cw {save /snapc1 exch def /oktoadvance false def /oktoprint false def /linestring linestring2 def /justx (justL) def 3 1 roll /ypos exch def /xpos exch def stringgonzo curwide snapc1 restore} def end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % (B) MENU JUSTIFY 2.20.91 % The cm routine takes a leading string and a trailing string seperated % by a delimiter and places a row of CONSTANT WIDTH, PRECISELY SPACED, % VERTICALLY ALIGNED and WHOLE dots (or whatever) between the two. It % is based on putting down the dots first and ERASING only whole dots % that are not wanted. /menudots (. ) def /menufont {font5} def /mdoteht 3 def /menudelim ( ) def /cropleadingspaces true def % drawmdots draws a line of menu dots, using plain old show /drawmdots { gsave menufont xxm yym moveto txtwide menudots stringwidth pop dup /mdot1 exch def div floor cvi {menudots show} repeat grestore } def % spchomp takes a string and conditionally removes all leading spaces, % returning the truncated string /spchomp {cropleadingspaces {dup 0 exch {32 eq {1 add}{exit} ifelse } forall} if exch dup length 2 index sub 3 -1 roll exch getinterval} def % mlineproc takes the mline string and processes it into a leading string, % the dot row, and a trailing string. Unused dots are erased with logic % to insure whole dots only. Null strings are ignored. /mlineproc {mline length 0 gt {drawmdots mline menudelim search {/lmstr exch def pop spchomp /rmstr exch def } if gsave showadgrays {grayshade}{1}ifelse setgray % for web color xxm yym moveto mdoteht setlinewidth 0 0 lmstr cw mdot1 div ceiling mdot1 mul 0 rlineto stroke xxm txtwide mdot1 div floor mdot1 mul add yym moveto 0 0 rmstr cw mdot1 div ceiling mdot1 mul neg 0 rlineto stroke grestore xxm yym lmstr cl xxm txtwide add yym rmstr cr /yym yym yinc sub def} if} def % mj menujustify accepts tabbed string pairs and converts them into % dotted menu listings.. /cm {gsave /msg exch def /yym exch def /xxm exch def { msg (\n) search {/mline exch def pop /msg exch def mlineproc} {/mline exch def mlineproc exit } ifelse} loop grestore} def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % /txtwide 170 def % textwidth /txtwide txtwide 8 sub def /yinc 8 def xpos 4 add ypos 0 sub (Tech Musings V or VI $24.50 Ask the Guru I or II or III $24.50 Hardware Hacker II, III or IV $24.50 Micro Cookbook I $19.50 PostScript Beginner Stuff $29.50 PostScript Show and Tell $29.50 PostScript Video & secrets $29.50 PostScript Reference II $34.50 PostScript Tutorial/Cookbook $22.50 PostScript by Example $32.50 Understanding PS Programming $29.50 PostScript: A Visual Approach $22.50 PostScript Program Design $24.50 Thinking in PostScript $22.50 LaserWriter Reference $19.50 Type 1 Font Format $16.50 Acrobat Reference $24.50 Whole works (all PostScript) $380.00 Technical Insider Secrets |9|kFREE|j|j|j|5 ) cm /txtwide txtwide 8 add def xpos ypos (|F |h|c|c|c |b |a |h |/tinton1 |C|6BOOK-ON-DEMAND|j|j PUB|j|j KIT |h|F|a |5Ongoing details on Book-on-demand publishing, a new method \ of producing books only when and as ordered. Reprints, \ sources, samples. |8$39.50|5 |b |a |h |/tinton1 |C|6THE|j|j C|kASE|j|j A|kGAINST|j|j P|kA|kTENTS |h|F|a |5For most individuals, patents are virtually certain to result in a net loss of sanity, energy, time, and money. \ This reprint set shows you Don's tested and proven real-world alternatives. |828.50|5 |b |a |h |/tinton1 |C|6BLATANT|j|j OPPORTUNIST|j|j I |h|F|a |5The reprints from all Don's Midnight Engineering columns. Includes a broad range of real world, proven coverage on small scale technical startup ventures. Stuff you can use right now. |8$24.50|5 |b |a |h |/tinton1 |C|6RESOURCE|j|j BIN|j|j I |h|F|a |5A complete collection of all Don's Nuts & Volts columns to date, including a new index and his master names and numbers list. |8$24.50|5 |b |a |h |/tinton1 |C|6FREE|j|j SAMPLES |h|F|a |5Check Don's Guru's Lair at |-|/surl http://www.tinaja.com|5|/tinaja for interactive \ catalogs and online samples \ of Don's unique products. Searchable reprints and reference resouces, too. Tech help, hot links to cool sites, consultants. |jemail:|j|- |/surl don@tinaja.com|1|/maildon ) stringgonzo showreaderservicenumber { /sstretch 0.25 def /cstretch 0.20 def /font1 /Helvetica-Bold [6 0 0 8 0 0 ]gonzofont bc 0 sub botheight neg 10 sub 2 sub % (Write in ) readerservicenumber ( ) cvs mergestr % ( on Reader Service Card.) mergestr cc (FREE catalog: http://www.tinaja.com (do NOT provide RS number!!) ) cc } if adsave restore } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % %%% ADDITIONAL ELECTRONICS PATCHES %%%% electronics begin /npn {gsave newpath exch 0.2 sub exch translate -.1 0 1.2 0 360 arc gsave grayshade dup 1 ne {0.15 sub} if setgray fill grestore line2 stroke -0.2 0 translate line3 -.3 -.7 moveto 1.4 u line1 -.3 0 mt 1.3 l -.2 .4 mt 0.6 0.4 rlineto 1.2 u newpath -.2 -0.4 mt 0.6 -0.4 rlineto 1.2 d newpath 0.4 -0.75 mt -.2 .3 rlineto -.2 -.3 rlineto closepath fill grestore} def /npnl {gsave translate -1 1 scale 0 0 npn grestore} def /pnp {gsave newpath exch 0.2 sub exch translate -.1 0 1.2 0 360 arc gsave grayshade dup 1 ne {0.15 sub} if setgray fill grestore line2 stroke -0.2 0 translate line3 -.3 -.7 moveto 1.4 u line1 -.3 0 mt 1.3 l -.2 .4 mt 0.6 0.4 rlineto 1.2 u newpath -.2 -0.4 mt 0.6 -0.4 rlineto 1.2 d newpath -.2 .4 mt .3 .4 rlineto .1 -.3 rlineto closepath fill grestore} def /pnpl {gsave translate -1 1 scale 0 0 pnp grestore} def /circ3 {gsave currentpoint newpath 0.8 0 360 arc gsave grayshade dup 1 ne {0.15 sub} if pop 1 % try white setgray fill grestore black line1 stroke grestore} def % end % electronics % %%%ZZZZ%%%%%%%%%%%%%% URL PATCHES %%%%%%%%%%%%%%%%%%%%%%%%%%%% % patch definitions... << /adobe (http://www.adobe.com) /analog (http://www.analog.com) /bci (http://www.batcon.org) /booktech (http://www.booktechmag.com) /candh (http://aaaim.com/CandH/index.htm) /digitalgraphics (http://www.nbm.com.digitalgraphics) /fair (http://www.fairradio.com) /etch (http://www.10mb.com/zacryl/page2.html) /kayel (http://www.kayelemetrics.com) /microlinear (http://www.microlinear.com) /motorola (http://www.motorola.com) /nss (http://www.caves.org) /podb (http://www.podb.com) /servo (http://www.servosystems.com) /tinaja (http://www.tinaja.com) /valiant (http://www.val-tech.com) /world (http://www.worldwatch.org) /tonybat (http://pw1.netcom.com/~t-rex/BatDetector.html) /batcall (http://life.csu.edu.au/batcall/abs/links/links.htm) /drhtml (http://www2.imagiware.com/RxHTML) /terraserver (http://www.terraserver.microsoft.com) /womplex (http://patent.womplex.ibm.com) /cadprimer (http://www.cadprimer.com) /litton (http://www.litton-ps.com/DataSheetList.htm) /leroy (http://www.spacey.net/ldavis/frames.html) /seti (http://setiathome.ssl.berkeley.edu) >> {mark exch /eurl cvx ] cvx def} forall % convert all to urls /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 /hack54 /muse90 /muse147 /bustpat /resbn66 ] {setglib} forall [ /magsn01 /patnt01 /ismm01 /ismm01 /libry01 /blat01 /advt01 /barg01 /amlink01 /muse01 /bod01 /scweb01 /tinaja01 /synlib01 /info01 /picup01 /webwb01 /golly01 /santa01 /synlib01 /acrob01 /consul01 /bargms01 /magsn01 /post01 /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 22 def % adjust for width of drop cap /sstretch 0 def % looser still /font0 /Times-Bold [52 0 0 54.1 0 -32] gonzofont % normal %/font0 /Times-Bold [41 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 [7 0 0 7.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 % tracking insets /integralinset {save /mat2snap exch store /cmb -9999 store % lock out column advance /ylimit -9999 store gsave xpos 10 add ypos translate /font6 /Times-Roman [8.5 0 0 8.5 0 4] gonzofont /font7 /Times-Italic [8 0 0 8 0 4] gonzofont /font8 /Times-Roman [6 0 0 6 0 6] gonzofont /font9 /Symbol [22 0 3 22 0 -7] gonzofont 38 0 (|9\362 |k|k|k|k|k|k|2e|j|j|6a|7x|j|82|2dx) cl grestore mat2snap restore % /ypos ypos yinc 7 mul sub def % make room } def %%%%%%% startgonzo |a I |b just picked up some interesting |41970's|1 \ military accelerometers. They consist of a fist-sized \ mag damped pendulum coupled to a syncro transmitter. These \ do seem to offer sub-g sensitivities.|p Yeah, solid state accelerometers from |/surl |2Analog \ Devices|1|/analog (check out their |4ADXL05|1 in particular)|1 or \ |/surl |2Motorola|1|/motorola or others are getting fairly cheap, \ stable, and quite sensitive. But these older mechanical \ beasties might still lead you to lots of interesting robot nav, \ physics demos, racing car apps, or even \ mil collectibles. With mods, they might \ also make dandy inclinometers or levels. \ Figure one shows us a typical photo. More details on these are now \ posted to my |/surl |2www.tinaja.com/bargms01.html|1|/bargms01 |p All of which reminded me that it is way past time for us \ to look at\274 |c Servos, Selsyns, and Friends |d A lot of the stuff we routinely do with cheap \ electronics these days at one time had to be handled by \ special and expensive mechanical devices. A |2servo|1 is \ any system that uses position or other |2feedback|1 to \ gain accuracy. The feedback of most closed loop systems \ improves precision but does so with price and stability \ problems. Usually, some position or velocity or whatever \ is measured and compared against your current goal, \ generating an |2error signal|1. The servo then seeks to \ minimize (or |2null out|1) errors. A |2servomechanism|1 is a servo that involves mechanical \ motion of some sort. A |2servomotor|1 is just any motor \ or mechanical actuator which can be run in either \ direction and can also be safely stalled in any position. A |2selsyn|1 is a system that consists of \ two or more motor-like devices \ that are intended to control or sense shaft positions. These might \ be true servo closed loop devices. Or they may simply \ work open loop. Selsyns played a major role in all |4WWII|1 \ ships and aircraft for position control. They still do see \ use for ham antenna sensors, for rugged industrial needs, or \ to measure wind speed and direction. Useful sources \ for selsyn parts are |/surl |2Fair Radio|1|/fair , |/surl |2Servo Systems|1|/servo \ or |/surl |5C & H|2 \ Sales|1|/candh . Figure two shows a typical selsyn setup. A |2synchro transmitter|1 \ consists of a \ three phase rotary transformer. The single phase rotor is \ driven from a |4400|1 cycle (aircraft) or a |460|1 cycle \ (ship or land) source. Three sensing windings physically \ spaced |4120|1 degrees around the stator output \ three sinewaves whose values are related to the \ shaft angle. A second device can be connected \ backwards across your three outputs. Its shaft will \ automatically |2follow|1 the input shaft position. Thus a \ pair of synchros could send any mechanical position or speed \ from one location to another distant one. Do note that this type of selsyn is really open loop. The \ input shaft has to do enough work to overcome all friction, \ electrical losses, and output shaft load inertia. So, \ your input shaft is loaded somewhat. Normally when you are \ only powering a meter pointer, this is no big deal. Other \ types of output selsyns will apply feedback \ for flap, rudder, or other serious tail twisting \ capabilities. Related devices include |2control transmitters|1 \ (to pick up improved accuracy), |2differential transmitters|1 (to \ add or subtract two shaft angles), or |2receivers|1 (handy for shaft \ position displays). A |2synchro resolver|1 does the \ calculations needed to find an angle's X and Y components. Fancier selsynn combinations can do amazingly sophisticated \ analog trig calculations or similar tasks. A useful synchro application guide tutorial is available \ at |/surl |2www.litton-|/litton |/surl ps.com/DataSheetList.htm|1|/litton Figure three shows us a standard synchro transmitter. \ Older sizes are usually measured in tenths of an inch. \ Thus a "size eight" selsyn is |40.8|1 inches in diameter \ while the "size fourteen"|1 safely clears an inch and a half \ space. Let me know if you need any of these to play with. |c Dealing With 400 Hertz |d Military and other aircraft selected |4400|1 Hertz as an \ operating frequency because the size and weight (and \ thus the horsepower per pound) are much better than the \ usual |460|1 Hertz utility power. The short \ transmission range of higher frequencies is not a \ factor in most airborne apps. Working |4400|1 cycle power used to be a pain, but these \ days a |4PIC|1, some coils, and a few power semis easily \ generates it. Mechanical "dynamotor" |460|1 Hertz \ to |4400|1 Hertz converters are readily available \ as military surplus at |/surl |2www.tinaja.com/barg01.html|1|/barg01 . And this is a perfect way to apply my new |2magic sinewave|1 \ techniques you will find described in detail at my \ |/surl |2www.tinaja.com/magsn01.html|1|/magsn01 Can you run a |4400|1 cycle device at |460|1 Hertz? If \ you one-on-one try this, smoke and fire are certain to \ result. The lower winding inductance draws much higher \ current at a set voltage, saturates the iron, and \ burns up. |/red |/staytint1 |y |2Do not ever plug any |5400|2 cycle device into the same \ voltage |560|2 cycle power line!|1 |/beige |/black |y But there is a sneaky workaround that few folks \ have picked up on. Uh, flux density is the name of the game. \ A |4400|1 cycle device will usually run just fine on \ |460 Hertz|1 |2if|1 you lower the voltage to \ |460/400|1ths or |40.15|1. The same current will produce the \ same magnetic flux, and the beast should remain \ happy. Naturally, the power and speed of a motor will be \ miniscule if you try this. But possibly still useful. |4400|1 Hertz iron is often cheap. Thankfully, in the case of a selsyn transmitter, these \ days you can use higher impedance |2electronic|1 \ loads you route to a |4PIC|1 or whatever. A |412|1 \ or |415|1 volt |460|1 Hertz ac supply should work just \ fine. Thus, selsyn synchro transmitters may still be able to hold their \ own against encoders or whatever for some experimental \ uses. Especially wind speed and position or for ham antenna \ sensing. And just may offer cost and \ reliability advantages. |c Servo and Feeback Books |d Selsyns may seem dated, but servo and feedback concepts \ definitely are not. With this in mind, I've gathered \ together some of the better books on this subject for you \ as our resource sidebar. More details on these \ titles at |/surl |2www.tinaja.com/amlink01.html|1|/amlink01 |c Listening to Bats |d Bats make use of utterly amazing ultrasonic sonar \ systems. Their |2echo location|1 gets used both in a low \ res mode for navigation and in high res to chow down on \ flying bugs. Considering the weight, the power, resolution, and \ efficiency, a typical bat nav system is some |2eleven \ orders of magnitude|1 better than the best of military \ radar systems. Eons ago, the bats discovered the |2chirp|1 secret to \ high resolution radar. Namely that a long swept \ frequency sinewave could get collapsed into the narrow \ pulses needed for high res distance measurements. \ Collapsing can be done by taking the |2Fourier|1 \ transform of the swept return signal. But the bat more \ than likely uses an acoustical delay network having a \ linear time versus frequency delay characteristic. Per figure four. Intuitively, sending any swept |4FM|1 sinewave into a linear time \ delay vs frequency network stalls the higher \ frequency parts more than the lower ones, so they all \ "pile up" on top of each other and form a narrow pulse. \ Mathematically, you have done the frequency domain to time \ domain conversion through |2Fourier|1, |2Wavelet|1, or \ some similar transformation. Your sweep rates and frequencies depend on the species \ and whether the bat is in travel or chow mode. But \ typical sweep limits might be |420|1 to |440|1 or |430|1 \ to |460|1 kilohertz with rep rates going as high as \ |4200|1 per second. You cannot directly hear most of a bat's chirp, because of \ its ultrasonic frequencies and wide bandwidths. Instead, \ one of a number of sneaky schemes can be used to listen in. One of the simplest is pick up the bat's chirp with an \ ultrasonic alarm transducer. You then amplify and limit \ the signal and divide it down with a |4CMOS|1 binary \ counter such as a |44040|1. The hard limiting removes \ many subtleties of the signal, but still lets you \ determine the presence and possibly the species of the \ bat. The |2hetrodyne|1 methods can also get used where you'll downconvert \ the bat's signal to the audio range where you can listen \ to it. A fancier newer scheme known as |2time dilation|1 \ works even better. You sample every |416|1th chirp \ signal and feed it to a dual port memory. You then read \ out the signal at a |41/16|1th rate, \ converting it to audio. While retaining all the full \ amplitude details. A great Tony Messina construction project on a simple \ divider-style bat detector can be gotten at \ |/surl |2pw1.netco|/tonybat |/surl m.com/~t-rex/BatDetector.html|1|/tonybat Other technical bat resources are at \ |/surl |2life.csu.edu.au/batcall/abs/links.htm|1|/batcall Your \ classic method of showing a bat's chirp is with a \ |2sonograph|1. An early pioneer in this field was |2Kay \ Elemetrics|1. Still found, of all places, at \ |/surl |2www.kayelemetrics.com|1|/kayel . Their |5DSP |2Sonograph Model \ |55500-1|1 seems to be an industry standard. Besides listining to bats, various counting and \ monitoring schemes are often put to use. They might involve \ anything from clickety-clack manual counters to the most \ elaborate of |43-D|1 multi-target image \ processing. Bat guano analysis can tell you a lot about pollution, \ climate, and other environmental changes as well. I am \ sometimes involved in an annual trek to Arizona's Falcon \ Creek Bat Cave to sample each year's guano deposits and \ return them for lab analysis. |/red |/staytint1 |y |4WARNING:|1 Before \ getting into this by yourself, be certain to read up on \ |2histoplasmosis|1. |/beige |/black Cough. Gag. Much more about Fourier and correllation appears \ in |/surl |4MUSE90.PDF|1|/muse90 and |/surl |4HACK54.PDF|1|/hack54 . More on |4CMOS|1 \ counters and such can be found in my |/surl |5CMOS|2 Cookbook|1|/synlib01 . The best place to go for accurate bat info is \ |5BCI|1, an acronym for |2Bat Conservation \ International|1. You can visit the website at \ |/surl |2www.batcon.org|1|/bci For some really strange reasons, bat enthuasiasts and cavers \ tend to go together. Maybe it is because they both sleep \ upside down. Thus, the |2National Speleological Society|1 \ up at |/surl |2www.caves.org|1|/nss also has all sorts of info and bat \ related activities. Local chapters of the |4NSS|1 are \ often called |2grottos|1. A typical state will have a \ dozen or more. |c Avoiding 404's |d Preventing website errors can be a thankless and \ never-ending task. We saw last month how there is a great \ freebie |2Dr. |5HTML|1 web service up at \ |/surl |2www.imageware.com/RxHTML|1|/drhtml or by way of my home page |4HTML|1 button \ at |/surl |2www.tinaja.com|1|/tinaja . This is great for checking \ everything from links to spelling to programming syntax. \ We also saw how to extend this service to Acrobat \ |4.PDF|1 files. A |4404|1 or |2File Not Found|1 Error is any file you \ cannot provide on your website. Some of these will be \ plain old mistakes visitors have made. Or snooping \ attempts to hunt for porn or to deduce your site structure. \ Others might be admin related. Ferinstance, the way my \ |4ISP|1 has the site search set up, unnecessary errors \ are reported. The search succeeds and the visitor is \ happy, but the error is mysteriously generated \ anyway. A third source of errors are your own mistakes that \ may be difficult or impractical to repair. Such as an url \ mention in some newsgroup or on a printed page. \ Or a misquote. But the final error sources are your own mistakes which \ you can correct. These you must ruthlessly stomp out \ when and as you find out about them. You find your \ errors by reading the raw log files that your |4ISP|1 should \ be providing you. Note that most stats software only \ does error summaries instead of the needed details. Errors can be found by searching the log files for a \ |4"- 404"|1. Of special interest is their |2referral|1 \ info in the same line. This tells you where your visitor \ came from. When they arrived from another of your pages, \ you've got a great clue to exactly when and where the \ error came down. A reasonable goal should be to keep \ your |4404|1 error rate under |2one half of one \ percent.|1 Our PostScript-as-language code for this month reads \ your log file, extracts the useful parts of each |4404|1 \ error line and reports them back to you. This can be a \ convenient way to improve your web stats. Details in figure five. You should first enter a PostScript program into a \ word processor or editor and then modify it for your \ intended use. You then save the file |2as a standard \ |5ASCII|2 textfile|1. The file is then sent to Acrobat \ Distiller or GhostScript. Extracted output error lists \ are reported onscreen in the log file and are saved as \ separate files for later analysis and correction. More on PostScript-as-langage in \ |/surl |2www.tinaja.com/post01.html|1|/post01 |c New Tech Lit |d |2MicroSoft|1 has recently upgraded their already \ outstanting |2TerraServer|1 site. Topo maps have gotten \ newly added to their aerial photos. They are also in the \ process of adding bunches of new photo coverage to one \ meter accuracy. You can find all this up at \ |/surl |2www.terraserver.microsoft.com|1|/terraserver Or just click on the \ |/surl |4AERIAL|1|/terraserver button up at my |/surl |2www.tinaja.com|1|/tinaja A monster "my database is bigger than yours" feud seems \ to be going on between the terraserver folks and the \ online |4IBM|1 patent resource up at \ |/surl |2patent.womplex.ibm.com|1|/womplex Uh, both of these clearly seem to \ be moving up well into terabyte \ territory. More on the patently absurd is up at \ |/surl |2www.tinaja.com/patnt01.html|1|/patnt01 From |/surl |2Micro Linear|1|/microlinear , a new |4CD|1 on their integrated \ circuit line. Useful ap-notes are included on lamp \ ballast and intelligent battery management. Freebie info on unique etching solutions and materials \ can be found at |/surl |2www.10mb.com/zacryl/page2.html|1|/etch \ Engineering links are provided here: \ |/surl |2www.spacey.net/ldavis/frames.html|1|/leroy Hit the \ |/surl |4LEROY|1|/leroy button on my home page at \ |/surl |2www.tinaja.com|1|/tinaja . The |4SETI|1 at home project has now shattered all \ records for the largest computing project of all time. \ It is now racking up over |2one millenia per day|1 of \ computing time! You are invited to become a participant \ by picking up details at \ |/surl |2setiathome.ssl.berkeley.edu|1|/seti Our featured trade journals for this month: \ |/surl |2BookTech|1|/booktech , |/surl |2Print on Demand|/podb |/surl Business|1|/podb , and \ |/surl |2Digital Graphics|1|/digitalgraphics . All on lots of emerging and exciting new \ self-publishing opportunities. More at \ |/surl |2www.tinaja.com/bod01.html|1|/bod01 |2State of the World |42000|1 is a "must read" from \ the |/surl |2Worldwatch Institute|1|/world that is on energy, \ pollution, species survival, and population issues. The secrets of designing your own |4USB|1 universal serial \ bus products are in Jan Axelson's new |5USB|2 \ Complete|1 book. Other books in the series now include \ |2Parallel Port Complete|1 and |2Serial Port Complete|1. \ More info is at \ |/surl |2www.tinaja.com/amlink01.html|1|/amlink01 |2RayCrete|1 and |2RayCrete|1 Marine by |/surl |2Valiant \ Technologies|1|/valiant are two rather interesting new polyester \ materials claimed to be safer than epoxies. They can be \ used as a thick section glue, sealant, or filler. This \ glop accepts a contact gloss from plastic forms, is \ reasonable in cost (|4$12|1 kits), stronger than many \ materials, bonds virtually anything to anything, and \ even sets underwater. Boat people can use these for \ repairs, and cavers to restore broken cave formations. \ See |/surl |2www.val-tech.com|1|/valiant To understand active filter design, be \ sure to check out my |/surl |2Active Filter|/synlib01 |/surl Cookbook|1|/synlib01 . See \ nearby |/surl |2Synergetics|1|/synlib01 ad or \ |/surl |2www.tinaja.com/synlib01.html|1|/synlib01 Plus our usual reminder here that low \ cost consulting services are up at \ |/surl |2www.tinaja.com/info01.html|1|/info01 . Our latest buys on the bargains at \ |/surl |2www.tinaja.com/barg01.html|1|/barg01 include superb sweep \ and function generators and even a few mint classic cold \ war nuclear radiation calculators. A fully hotlinked version of this column \ is up as file \ |/surl |4MUSE147.PDF|1|/muse147 Most of the mentioned items should \ appear in our |2Names & Numbers|1 or |2Servo Books|1 \ sidebars. |/tinton |-F|1 |x 57 348 menu8 showpage (Do check here before emailing \ |2don@tinaja.com|1 or calling our no charge |4US|1 \ technical helpline shown in the nearby box. Let's hear from you. ) pop % this optionally displays the figures /prodart false def prodart { % redefine figures /fig1x {40 50 2colwide f1h true true /f1name /figure1 stdmusefigwc} def % link /fig2x {40 50 2colwide f2h true true /f2name /figure2 stdmusefig} def % link /fig3x {40 50 1colwide f3h true true /f3name /figure3 stdmusefigwc} def % link /fig4x {40 50 2colwide f4h true true /f4name /figure4 stdmusefig} def % link /fig5x {40 50 2colwide f5h true true /f5name /figure5 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 33 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 1 mul fig3x} exec showpage % WARNING ODD /narrowfig 0 def % landscape -35 0 translate /narrowfig 0 def 1.2 dup scale { 0 0 0.9 fig4x} exec showpage /narrowfig 0 def % landscape -35 0 translate /narrowfig 0 def 1.5 dup scale { 0 0 0.9 fig5x} 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 33 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 -35 0 translate 1.5 dup scale {0 0 0.9 1 mul fig3x} exec showpage % WARNING ODD /narrowfig 0 def % landscape -35 0 translate /narrowfig 0 def 1.2 dup scale { 0 0 0.9 fig4x} exec showpage /narrowfig 0 def % landscape -35 0 translate /narrowfig 0 def 1.5 dup scale { 0 0 0.9 fig5x} 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 0 -100 translate 1.5 dup scale {0 31 21 add 1 ad1} exec showpage 0 -550 translate 1.5 dup scale {0 31 21 add 1 ad1} exec showpage } if % 50 320 menu8 /mat2inset {save /mat2snap exch store gsave xpos 10 add ypos translate mat2snap restore % /ypos ypos yinc 7 mul sub def % make room } def %%%%%%%%%%%%%