%! %% Resbn92 postscript % IMPORTANT NOTE: The file gonzo.ps is required to run % this program. /havegonzoinstalled true def % Is gonzo20 on system? havegonzoinstalled {(C:\\windows\\desktop\\gonzo\\gonzo.ps) run} % use internal gonzo {(A:\\gonzo.ps) run} % use external gonzo ifelse % 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 ps.util.1 begin printerror nuisance begin longjob % blackflash % this allows for a different size ad in the tabloid and the reprint... /squashad true def /showadgrays true def % for web % this can give you oversize copies for camera ready use /makeitbig false def % big is 150 percent /printbottomhalf false def % only used if 1.5 scale % this decides whether to put the gray fill on the numbers box /showboxgrays true def /grayshade 0.96 def % for title fill 1 = white % this sets your gray fill screen if used 106 45 {dup mul exch dup mul add 1.0 exch sub} setscreen /adjustpage { makeitbig {landscape printbottomhalf {0 -20 translate} {0 -550 translate} ifelse 1.333 dup scale}if} def adjustpage %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Here's some needed routines not yet in GUTILITY.PTL or GONZO13A.PTL % 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 % close gonzo dictionary %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % GURU 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 /guru3 exch def guru3 begin /templatefonts { % Remember: all fonts MUST defer till run time! /font0 /Revue [29 0 0 35.05 0 -23] gonzofont /font1 /Palatino-Roman [9.5 0 0 9.5 0 0] gonzofont /font2 /Palatino-Italic [9.5 0 0 9.5 0 0] gonzofont /font3 /Palatino-Bold [10 0 0 10.05 0 -8] gonzofont /font4 /Palatino-Roman [9 0 0 9 0 0] gonzofont /font5 /Palatino-Italic [9 0 0 9 0 0] gonzofont /font6 /Palatino-Bold [9 0 0 9 0 0] gonzofont /font7 /Palatino-BoldItalic [9 0 0 9 0 0] gonzofont /font8 /Helvetica [8 0 0 8 0 0] gonzofont /font9 /Helvetica-Bold [9 0 0 9.05 0 4] gonzofont /font- /ZapfDingbats [9 0 0 9.01 0 -0.5] gonzofont /font= /Symbol [9 0 0 9 0 0] gonzofont /font: /Palatino-BoldItalic [14 0 0 14 0 0 ] gonzofont % special for lead } def % normallisting is used by the GURU figures for long text ... /normallisting { /txtwide bw 20 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 10 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.1 def % minimum space kerning /sstretch 0 def % modified minimum space kerning /sstretch 0 def % minimum space kerning TRY LOOSER /dropcount 3 def % number of lines drop cap drops /spacecharratio 10 def % fill justify stretch ratio. 6 default /lastlinestretch 0.03 def % open last paragraph line slightly was .04 /pm 10 def % use paragraph indents /yinc 11 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 (znyhC3) stringmacro /ypos ypos yinc 2 div sub def} def % centered title WIDENED /dmacro {black (pFh1) stringmacro /ypos ypos yinc 2 div sub 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 165 def % width of normal text columns /cmb 45 def % column bottom position /cmt cmb 65 1 sub yinc mul add 0.1 add def % page is 63 normal text lines high /cml 40 def % first column left margin /cms 181 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 at 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 8 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 cms 2 mul txw add def % width of triple column figure /f0h yinc 14 mul def % drop for title /f1h yinc 61 mul def % height of ad /f2h yinc 22 mul def % height of names and numbers /f3h yinc 29 mul def % height of aux names and numbers /f4h yinc 7 mul def % height of nextmonth /fig0 {cm1 cmt f0h sub 2colwide f0h false false /f0name /title stdfig} def % link /fig1 {cm3 cmt f1h sub 1colwide f1h false false /f1name /ad stdfig} def % link /fig2 {cm1 cmt yinc 1 mul sub 12 sub f2h sub 3 add % normal = 3 colwide yinc add 3colwide f2h true % usually 3colwide true /f2name /nums grayfig2} def % link /fig3 {cm1 cmt f3h sub 3 add 2colwide f3h true false /f3name /auxnums stdfig2} def % link /nextmopos 10 def % sets next month box WARN WHEN ODD /f4bot {nextmopos yinc mul 0.1 add} def % sets position of nextmonth /f4top {f4bot f4h add} def /fig4 {cm2 cmb f4bot add 4 add yinc 2 div 1 add add 1colwide f4h true false /f4name /nextmonth stdfig3} def % link 2 div for |h % this is a "standard" figure border for PCT. It has rounded edges, % a bottom single line title, and links to the actual figure art... /stdfig { /jsave justx 4 get def save /stdsnap exch def /colcheck {} def /figproc exch def cvx /figname exch def /showtitle exch def /showborder exch def 8 sub /figheight exch def /figwidth exch def /txtwide 1000 def translate showborder { 0 1 figwidth 2 sub figheight 10 sub stdfigrad roundbox 0.5 setlinewidth showboxgrays {gsave bestgray 0.95 setgray fill grestore} if stroke gsave 0 figheight figwidth 2 sub -13 stdfigrad roundbox 0.5 setlinewidth showboxgrays {gsave bestgray 0.95 setgray fill grestore} if stroke grestore } if /font; /Palatino-Bold 10 gonzofont showtitle { gsave 5 figheight 10 sub moveto 10 0 rlineto -5 8.66 rlineto closepath fill grestore 20 figheight 10 sub font; figname cl} if /bw figwidth def /bt figheight def /bl 0 def /bc figwidth 2 div def /xpos 20 def /ypos bt 20 sub def /linestring linestring2 def % needed to run interference /cstretch 0 def /sstretch 0 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 % 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 [ [ { } { } { } ] % initial document files [ [{0 0 1 fig0} % xpos ypos scale name {rightfooter} {0 0 1 fig4} ] % page one figures and control [ cm1 cmt f0h sub yinc sub cmb txw] % column1 xpos ypos ylimit txtwide [ cm2 cmt f0h sub yinc sub cmb f4top add txw] % column2 w/nextmonth [ cm2 cmb f4bot add cmb txw] % column2 w/ nextmonth [ cm3 cmt f0h sub yinc sub cmb txw] % column3 xpos ypos ylimit txtwide ] [ [{leftfooter} {beige 0 -58 1 fig1 lime} % ad ] % page two figures and control [ cm1 cmt cmb txw] % column2 xpos ypos ylimit txtwide [ cm2 cmt cmb txw] % column2 xpos ypos ylimit txtwide % [ cm3 cmt f1h sub yinc 2 mul sub cmb txw] % column3 xpos ypos ylimit txtwide ] /botadj 0 yinc mul def [ [{beige rightfooter} {/stretchnums 0 def} % adjusts to numbox (- = up) {55 0 .9 fig2} % fig2 is nums ] % page three figures and control [ cm1 cmt f2h sub yinc sub cmb botadj add txw] % [ cm2 cmt f2h sub yinc sub cmb botadj add txw] % column2 xpos ypos ylimit txt [cm3 cmt f2h sub yinc sub cmb txw] % temp three wide box % [ cm3 cmt cmb txw] % column3 xpos ypos ylimit txtwide ] [ [{leftfooter} % {13 28 .9 fig3} % fig2 is supnums ] % page four figures and control /botadj 22 yinc mul def [ cm1 cmt cmb botadj add txw] [ cm2 cmt cmb botadj add txw] [ cm3 cmt cmb txw] ] [ [{rightfooter} ] % page five figures and control [ cm1 cmt cmb txw] [ cm2 cmt cmb txw] % column2 xpos ypos ylimit txtwide [ cm3 cmt cmb txw] ] [ [{leftfooter} ] % page six figures and control [ cm1 cmt cmb txw] [ cm2 cmt cmb txw] % column2 xpos ypos ylimit txtwide [ cm3 cmt cmb txw] ] [ [{rightfooter} ] % page seven figures and control [ cm1 cmt cmb txw] [ cm2 cmt cmb txw] % column2 xpos ypos ylimit txtwide [ cm3 cmt cmb txw] ] [[{}] [cm1 cmt cmb txw]] % possible blank page ? [ {quit} ] % 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 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 /font1 /Palatino-Bold [56 0 0 56 0 0] gonzofont /font2 /AvantGarde-BookOblique [12 0 0 14 0 0] gonzofont /yinc 54 def hdc cmt 66 sub font1 titlename cc /yinc 11 def cml 572 author font2 cl blurbsnap restore} def /leftheader {save /blurbsnap exch def /colcheck {} def blurbsnap restore} def /rightheader {save /blurbsnap exch def /colcheck {} def blurbsnap restore} def /leftfooter { save /blurbsnap exch def /colcheck {} def /cstretch 0.15 def /sstretch 0.2 def /txtwide 1000 def 0 -2 translate % temporary reposition for me /drop cmb 15 sub def /offset 18 def /font1 /Helvetica-Bold [10 0 0 9 0 0] gonzofont /font2 /Bookman-DemiItalic 7 gonzofont 0.5 setlinewidth cml cmb 4 sub moveto hdw 0 rlineto stroke font1 cml drop colnum (.) mergestr colpagenum ( ) cvs mergestr cl % cml 0.3 add drop colpagenum ( ) cvs cl font2 cml offset add drop outermsg cl font3 % cml hdw add drop guttermsg cr /font7 /Helvetica 5.2 gonzofont /font8 /Helvetica 4.9 gonzofont font7 /yinc 6 def cml hdw add drop 0 add /txtwide 1000 def (Copyright c |81999|7 by Don Lancaster |8(520) 428-4073|7 www.tinaja.com \ All commercial and all electronic media rights fully reserved.) cr blurbsnap restore /colpagenum colpagenum 1 add def } def /rightfooter { save /blurbsnap exch def /colcheck {} def /cstretch 0.15 def /sstretch 0.2 def /txtwide 1000 def 0 -2 translate % temporary reposition for me /drop cmb 15 sub def /offset 28 def /font1 /Helvetica-Bold [10 0 0 9 0 0 ] gonzofont /font2 /Bookman-DemiItalic 7 gonzofont 0.5 setlinewidth cml cmb 4 sub moveto hdw 0 rlineto stroke font1 cml hdw add drop colnum (.) mergestr colpagenum ( ) cvs mergestr cr % cml 0.3 add hdw add drop colpagenum ( ) cvs cr font2 cml hdw add offset sub drop outermsg cr font3 % cml drop guttermsg cl /font7 /Helvetica 5.2 gonzofont /font8 /Helvetica 4.9 gonzofont font7 /yinc 6 def cml drop 0 add /txtwide 1000 def (Copyright c |81997|7 by Don Lancaster |8(520) 428-4073|7 www.tinaja.com \ All commercial and all electronic media rights fully reserved.) cl blurbsnap restore /colpagenum colpagenum 1 add def } def end % nv template %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % //// ACTUAL COLUMN STARTS HERE //// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /colpagenum 1 def /colnum (91) def /guttermsg (Don Lancaster's Resource Bin|j/|jSeptember 1999) def /outermsg (September 1999|j/|jDon Lancaster's Resource Bin) def /title { save /snap11 exch def mark % this centers and makes room for blurb cms 2 div yinc 2 mul translate -3 yinc neg translate % center in column 0 0 12 setgrid % 30 30 showgrid /cstretch 0.03 def /sstretch 0.2 def /font1 /Revue [2.8 0 0 2.81 0 0] gonzofont % was -.85 down /font2 /Revue 1 gonzofont /font3 /Revue 1.15 gonzofont /yinc 3.7 def /kern 0.1 def bestgray 0.9 setgray 1 setlinecap 1 setlinejoin 0.5 [ 2 8 2 10.5 28 10.5 28 8 ] roundpath [.6 showadgrays {0.3}{0} ifelse .3 .8] superstroke showadgrays {0.3} {0} ifelse setgray 10 9.25 10 2.5 0.2 roundbox gsave grayshade setgray fill grestore line2 stroke grestore black [.6 .3 .3 .8] superstroke black 0.5 [ 2 5.5 2 3 28 3 28 5.5 ] roundpath [.6 .3 .3 .8] superstroke % 9.75 1.95 10.5 2.1 0.2 roundbox % long seventeen % 33 = 12 % /numboxwidth 10 def font2 /numboxwidth 0 0 resbinnum cw 1.4 add def 15 numboxwidth 2 div sub 1.95 numboxwidth 2.1 0.2 roundbox gsave grayshade setgray fill grestore line2 stroke grestore /yinc 3.7 def showadgrays {0.3}{0} ifelse setgray 15 10.1 (|2Don Lancaster's) cc 15 10.1 3.7 2 mul sub % (|2number|k|k sixty|k|k six) cc resbinnum cc 0.3 setgray 15 10.1 3.7 sub 0.85 sub (|1RESOURCE BIN) cc black 15 0 % (|3A painless way to scam a student paper.) cc font3 resbinname cc grestore cleartomark snap11 restore } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /ad { xpos 20 sub ypos 605 sub translate %%%% This code puts in the reader service number %%%% /showreaderservicenumber true def /readerservicenumber 146 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 {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-NV|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 |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|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 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 Synergetics Surplus Catalog |9|kFREE|j|j|j|5 Technical Insider Secrets |9|kFREE|j|j|j|5 ) cm /txtwide txtwide 8 add def xpos ypos (|F |h|c|c|c |b |a |h |C|6BOOK-ON-DEMAND|j|j PUB|j|j KIT |h|F|a |5Ongoing details on Book-on-demand publishing, a new method of producing books only when and as ordered. Reprints, sources, samples. |8$39.50|5 |b |a |h |C|6THE|j|j C|kASE|j|j A|kGAINST|j|j P|kA|kTENTS |h|F|a |5For most individuals, patents are virtually certain to result in a net loss of sanity, energy, time, and money. \ This reprint set shows you Don's tested and proven real-world alternatives. |828.50|5 |b |a |h |C|6BLATANT|j|j OPPORTUNIST|j|j I |h|F|a |5The reprints from all Don's Midnight Engineering columns. Includes a broad range of real world, proven coverage on small scale technical startup ventures. Stuff you can use right now. |8$24.50|5 |b |a |h |C|6RESOURCE|j|j BIN|j|j I |h|F|a |5A complete collection of all Don's Nuts & Volts columns to date, including a new index and his master names and numbers list. |8$24.50|5 |b |a |h |C|6FREE|j|j SAMPLES |h|F|a |5Check Don's Guru's Lair at |-http://www.tinaja.com|5 for interactive catalogs and online samples \ of Don's unique products. Searchable reprints and reference resouces, too. Tech help, hot links to cool sites, consultants. |jemail:|j|- don@tinaja.com|1 ) stringgonzo showreaderservicenumber { /sstretch 0.25 def /cstretch 0.20 def /font1 /Helvetica-Bold 6 gonzofont bc 0 sub botheight neg 10 sub (Write in ) readerservicenumber ( ) cvs mergestr ( on Reader Service Card.) mergestr cc } if } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Here is a special stdfig for the names and numbers /stdfig2 { gsave 0 6 translate /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 5 figwidth 2 sub figheight 11 sub stdfigrad roundbox gsave showboxgrays {grayshade}{1} ifelse setgray fill grestore [2 0 1 1] superstroke } if /font7 /Helvetica-Bold 9 gonzofont showtitle {figwidth 2 div 12 font7 figname cc} 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 % needed to run interference 3 1 roll translate dup scale mark figproc cvx exec cleartomark stdsnap restore justx 4 jsave put grestore } def % stdfig3 is a shifted stdfig2 for sidebars /stdfig3 {gsave 0 -9 translate stdfig2 grestore} def %%%%%%%%%%%%%%%%% % grayfig two has a title box /grayfig2rad 3 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 13 figwidth 2 sub figheight 5 sub grayfig2rad roundbox 0.4 figheight 28 sub moveto figwidth 1.8 sub 0 rlineto gsave showboxgrays {grayshade}{1} ifelse setgray fill grestore gsave newpath 0 figheight moveto figwidth 0 rlineto 0 -28 rlineto figwidth neg 0 rlineto closepath white fill grestore [2 0 1 1] superstroke } if /font7 /Helvetica-Bold 9 gonzofont showtitle {black figwidth 2 div figheight 20 sub font7 figname cc} if black /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 % needed to run interference 3 1 roll translate dup scale mark figproc cvx exec cleartomark stdsnap restore justx 4 jsave put } def %%%%%%%%%%%%%%%%%%%%%%%%% /nums { /title ( ) def /cstretch 0.1 def /sstretch 0.1 def /font2{/Helvetica-Bold findfont [9 0 0 9 0 0 ] makefont setfont}def /font7 {/Helvetica-Bold findfont [6 0 0 6 0 0] makefont setfont} def /font8 {/Helvetica findfont [8 0 0 8 0 0] makefont setfont} def font2 /bmacro {/yhold ypos def /ypos ytopoflist def /xpos xpos columnspacing add def /ypos ypos yinc add def} def % /stretchnums 0 def /amacro {/ypos ypos stretchnums sub def} def /yinc 9 def /font7 {/Helvetica findfont [8 0 0 8 0 0] makefont setfont} def /font8 {/Helvetica-Bold findfont [8 0 0 8 0 0] makefont setfont} def /xpos bl 10 add def % two wide /xpos bl 30 sub def % three wide % /xpos bl 40 sub def % four wide % /xpos bl 38 sub def % five wide /scalefactor 0.9 def % fixed position independent of sf /ypos bt 48 sub scalefactor div def /ytopoflist ypos def %/columnspacing 135 def % two wide % /columnspacing 121 def % three wide % /columnspacing 110 3 add def % five wide /columnspacing 117 12 add 8 add def % temp 4 wide huh % special for six wide % /yinc 9 def % /font7 {/Helvetica-Narrow findfont % [7.5 0 0 7.5 0 0] makefont setfont} def % /font8 {/Helvetica-Narrow-Bold findfont % [7.5 0 0 7.5 0 0] makefont setfont} def % temp bee patch /font1 {/Helvetica-Narrow findfont [8 0 0 8 0 0] makefont setfont} def /font2 {/Helvetica-Narrow-Bold findfont [8 0 0 8 0 0] makefont setfont} def % /columnspacing 96 def % six wide % /xpos xpos 11 sub def % /yinc 8.5 def %% end six wide /txtwide 1000 def % xpos 3 sub 4 sub ypos % (|8Berkeley Wellness Ltr|7 % PO % ) cl % {{ % if urls only xpos 7 sub 31 add % temp ypos (|2Adobe Acrobat System|1 1585 Charleston Rd Mountain View CA 94039 (800) 833-6687 |/surl |2www.adobe.com|1|/adobe |a |2Aladdin/Ghostscript|1 Box 60264 Palo Alto CA 94306 (415) 322-0103 |/surl |2www.cs.wisc.edu/~ghost|/ghost |a |2Download Mechanic|1 3655 Nobel Drive La Jolla CA 92037 (619) 587-4668 |/surl |2www.acquiredknowledge.com|/acquired |a |2Electronic Publishing|1 98 Split Brook Road Nashua, NH 03062 (603) 891-9066 |/surl |2www.penwell.com|1|/penwell |b |2Emerge|1 462 Boston St Topsfield MA 01983 webmaster@pdfzone.com |/surl |2www.pdfzone.com|/emerge |a |2Enfocus Software|1 3 Warters Pk Dr #210 San Mateo CA 94403 (650) 358-1210 |/surl |2www.enfocus.com|/enfocus |a |2Gerber Scientific|1 151 Batson Dr Mancheste CT 06040 (800) 22-7446 |/surl |2www.gspinc.com|/gerber |a |2Hewlett-Packard HPGL|1 PO Box 10301 Palo Alto CA 94303 (415) 857-1501 |/surl |2www.hp.com|/hewpack |b |2Image Alchemy|1 48860 Milmont Dr Ste 106 Fremont CA 94538 (510) 252-1010 |/surl |2www.handmadesw.com|/alchemy |a |2Microchip Technology|1 2355 W Chandler Blvd Chandler AZ 85224 (480) 786-7200 |/surl |2www.microchip.com|/microchip |a |2Parallax|1 3805 Atherton Rd #102 Rocklin CA 95765 (916) 624-8333 |/surl |2www.parallaxinc.com|/parallax |a |2Gordon M Robineau|1 6181 S Randall Blvd #10 Tucson AZ 85706 (520) 573-9314 |b |2Synergetics|1 Box 809 Thatcher AZ 85552 (520) 428-4073 |/surl |2www.tinaja.com|1|/synlib01 |a |2Transverter Pro|1 2726 Loker Ave W Carlsbad CA 92008 (800) 925-6998 |/surl |2www.techpool.com|/techpool |a |2Videonics|1 1370 Dell Avenue Campbell CA 95008 (408) 866-8300 |/surl |2www.videonics.com|/videonics |a |2WinBatch|1 5421 California Ave SW Seattle WA 98136 (800) 762-8383 |/surl |2www.windowware.com|/winbatch ) cl % }} pop {{ % special for url list /font6 /Helvetica-Narrow-Bold 8 gonzofont /font1 /Helvetica-Narrow 8 gonzofont /tabs [110] def /yinc 9.7 def /columnspacing 290 def /txtwide 1000 def /columnspacing 280 def font1 xpos -12 add ypos % special (|1AM North America nostalgia site \ |t|/surl |6www.bigcountry.com/w5ami|1|/w5ami |1The AM Window \ |t|/surl |6www.thebizlink.com/am|1|/amwindow |1Antique Electronic Supply \ |t|/surl |6www.tubesandmore.com|1|/aes |1Antique Radio Classifieds \ |t|/surl |6www.antiqueradio.com/toc.html|1|/arc |1Antique Radio collection \ |t|/surl |6www.communique.net/~zydeco|1 |1Antique radio links \ |t|/surl |6www.antiqueradio.com/radiolinks.html|1|/arl |1Boatanchor classifieds \ |t|/surl |6www.dealamerica.com/deal/cgi-bin/ads/bcads.cgi|1|/bacla |1Boatanchor FAQ Questions #1 \ |t|/surl |6www.primenet.com/~rfwatts/boatancr.faq|1|/faq1 |1Boatanchor FAQ Questions #2 \ |t|/surl |6www.cs.unc.edu/~nick/rrab.faq.htm|1|/faq2 |1Boatanchor forum \ |t|/surl |6www.dealamerica.com/deal/cgi-bin/lite/forum.cgi|1|/baforum |1Boatanchor schematics & manuals \ |t|/surl |6oak.cats.ohiou.edu/~postr/bapix|/ohiou |1Boatanchor mailing list \ |t|/surl |6www.theporch.com/shimshon|1|/baml |1Boatanchor web ring \ |t|/surl |6http://www.cs.unc.edu/~nick/rrab.faq.htm#web_ring|/webring |1Classic ham photos and trades \ |t|/surl |6www.boatanchors.com|1|/wb7awk |1The Collins Journal \ |t|/surl |6www.pixi.com/~jenkins/collins|1 |1Fair Radio Sales \ |t|/surl |6www.fairradio.com|1|/fair |1General online auction site \ |t|/surl |6www.ebay.com|1|/ebay |1Hallicrafters collectors assn \ |t|/surl |6www.hallicrafters.org|1|/hallicraft |1Hallicrafters mil BC610 site \ |t|/surl |6www.kong.net/radio|/bc610 |b |1Heathkit collector resource \ |t|/surl |6home.earthlink.net/~docky/doc.html|/docky |1Heathkit ham radio pages \ |t|/surl |6members.accessus.net/~dwentz/kb9jja/heathkit|/kb9jja |1Heathkit restoration/trading site \ |t|/surl |6epsilon.cs.unc.edu/~nick/hobbies.html|1|/nick |1Images of classic ham gear \ |t|/surl |6www.geocities.com/Paris/1769/boatanchor01.html|1|/w1ux |1InfoPack custom research services \ |t|/surl |6www.tinaja.com/info01.html|1|/info01 |1Military equipment lists & links \ |t|/surl |6www.telalink.net/~badger/millist/mi.html|1|/badger |1Mil manuals, crystals, and parts \ |t|/surl |6www.qsl.net/w3ugd|1|/surplusal |1Military telephone info site \ |t|/surl |6www.nashville.net/~badger/millist/mi.html|/mts |1Old time radio page \ |t|/surl |6www.arrowweb.com/M1/otr/|/Robertson |1Oscilloscope & other book access \ |t|/surl |6www.tinaja.com/amlink01|/amlink01 |1Tektronix doghouse museum \ |t|/surl |6margo.student.utwente.nl/~wel/tek.htm|/doghouse |1The Radio Room \ |t|/surl |6www.mindspring.com/~johnmb/radio_rm.htm|1|/radioroom |1BA Receiver images \ |t|/surl |6www.connix.com/~provero/rovero.htm|1|/rovero |1Surplus electronic bargains \ |t|/surl |6www.tinaja.com.barg01.html |1Vacuum tube history & links \ |t|/surl |6www.primenet.com/~rfwatts/tubes.html|1|/tubego |1Vintage ham manuals \ |t|/surl |6www.w7fg.com|1|/vintage |1Virtual Collins museum \ |t|/surl |6www.wa3key.com/collins.html|1|/wa3key |1Web access tools \ |t|/surl |6www.tinaja.com/webwb01.html|/webwb01 |1Wireless Museum images \ |t|/surl |6www.vistech.net/users/w1fji/museum.html|/wireless ) cl }} pop % temp hide } def % /nums {} def % temp bypass %%%%%%%%%%%%%%%%%%%%%%%%%% /auxnums { /title ( ) def /cstretch 0.1 def /sstretch 0.1 def /font2{/Helvetica-Bold findfont [9 0 0 9 0 0 ] makefont setfont}def /font7 {/Helvetica-Bold findfont [6 0 0 6 0 0] makefont setfont} def /font8 {/Helvetica findfont [8 0 0 8 0 0] makefont setfont} def font2 bc bt 34 sub (OTHER MENTIONED RESOURCES)cc /amacro {/yhold ypos def /ypos ytopoflist def /xpos xpos columnspacing add def /ypos ypos yinc add def} def /yinc 9 def /colspacing 75 def /font7 {/Helvetica findfont [8 0 0 8 0 0] makefont setfont} def /font8 {/Helvetica-Bold findfont [8 0 0 8 0 0] makefont setfont} def /xpos bl 18 add def % 43 add def /ypos bt 56 sub def % 10 sub def % special for 17 /ytopoflist ypos def /columnspacing 140 25 sub def xpos ypos ( ) cl } def %%%%%%%%%%%%%%%%%%%%%% /nextmonth { save /nextmo exch def /cstretch 0.02 def /sstretch 0.02 def /font: /Helvetica-Bold [11 0 0 11.05 0 0] gonzofont font: /yinc 14 def 81 42 (NEXT|j MONTH:|j|j Don looks at some wireless comm developments.)cc nextmo restore } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%% /sidebar1 { % name of textfile: hack.fig.51.5 Laser Service Manuals % ............................ /title (Fig. 1 \261 Use these HP Manuals for Apple LaserWriter repairs.) def save /snap1 exch def ypos snap1 restore /ypos exch def } def %%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%% /figure3 { % name of textfile: royalty free real postscript % ............................ save /snap1 exch def % name of textfile: hack.fig.66.4 PostScript interface % ............................ snap1 restore } def %%%%%%%%%%%%%%%% % Umacro is the drop in cut for the valve that should track the text /Umacro { } def % not in this issue /f2name (SOME SELECTED POSTSCRIPT RESOURCES) def % not used in this column /f1name (FIGURE 1 \261 A PostScript two-way communications verifier.) def /f3name (FIGURE 3 \261 PostScript serial comm initial checkout.) def /f4name (FIGURE 4 \261 Use this PostScript fractal fern as a practice file.) def /f5name (|k|kFIG. 5 - Reserved Characters.) def % random variables that may crop up ... /showthegrid false def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % new: doembeddedproc executes |/name % installdoembeddedproc links it to gonzo /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 %% picojust patch 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 %%%%% TEMPORARY TINTER %%%% makes gray a beige tint /setgray {dup 0.731 ge {1 exch dup .41 mul .30 sub .11 div setrgbcolor} {0.856 div dup 1.155 mul exch 1.155 div 0 setrgbcolor} ifelse} bind def %%%%%%%%%%%% %%%%%%%%%%%%%%%% Resource Bin patches %%%%%%%%%%%%%%%%%% % December 29, 1996 % Place JUST BEFORE ixe wanttousepico text. Change colnum below. /colnum (79) def % add STRING for new numbering /resbinnum (number|k|k sixty|k|k nine) def /resbinname (A few of my favorite web sites.) def guru3 begin /boxgrays 0.92 def /grayshade boxgrays def /staytint {0.33 setgray} def /staytint1 {0.25 setgray} def /showadgrays true def /Zmacro {tinton /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 /lime 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.11 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 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% lime %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /colpagenum 1 def % new numbling. /leftfooter { save /blurbsnap exch def /colcheck {} def 0.25 setgray /cstretch 0.15 def /sstretch 0.2 def /offset 18 def /txtwide 1000 def 0 -2 translate % temporary reposition for me /drop cmb 15 sub def /offset 20 6 add def % makes room for pagenumber /font1 /Helvetica-Bold [10 0 0 9 0 0] gonzofont /font2 /Bookman-DemiItalic 7 gonzofont 0.5 setlinewidth cml cmb 4 sub moveto hdw 0 rlineto stroke font1 cml drop colnum (.) mergestr colpagenum ( ) cvs mergestr cl cml 0.3 add drop colnum (.) mergestr colpagenum ( ) cvs mergestr cl font2 cml offset add drop outermsg cl font3 % cml hdw add drop guttermsg cr /font7 /Helvetica 5.2 gonzofont /font8 /Helvetica 4.9 gonzofont font7 /yinc 6 def cml hdw add drop 0 add /txtwide 1000 def (Copyright c |81999|7 by Don Lancaster |8(520) 428-4073|7 www.tinaja.com \ All commercial and all electronic media rights fully reserved.) cr blurbsnap restore /colpagenum colpagenum 1 add def } def /rightfooter { save /blurbsnap exch def /colcheck {} def 0.25 setgray /cstretch 0.15 def /sstretch 0.2 def /txtwide 1000 def 0 -2 translate % temporary reposition for me /drop cmb 15 sub def /offset 22 2 add def % make room for page numble. /font1 /Helvetica-Bold [10 0 0 9 0 0 ] gonzofont /font2 /Bookman-DemiItalic 7 gonzofont 0.5 setlinewidth cml cmb 4 sub moveto hdw 0 rlineto stroke font1 cml hdw add drop colnum (.) mergestr colpagenum ( ) cvs mergestr cr cml 0.3 add hdw add drop colnum (.) mergestr colpagenum ( ) cvs mergestr cr font2 cml hdw add offset sub drop outermsg cr font3 % cml drop guttermsg cl /font7 /Helvetica 5.2 gonzofont /font8 /Helvetica 4.9 gonzofont font7 /yinc 6 def cml drop 0 add /txtwide 1000 def (Copyright c |81999|7 by Don Lancaster |8(520) 428-4073|7 www.tinaja.com \ All commercial and all electronic media rights fully reserved.) cl blurbsnap restore /colpagenum colpagenum 1 add def } def % this is a "standard" figure border for PCT. It has rounded edges, % a bottom single line title, and links to the actual figure art... /stdfig { /jsave justx 4 get def save /stdsnap exch def /colcheck {} def /figproc exch def cvx /figname exch def /showtitle exch def /showborder exch def 8 sub /figheight exch def /figwidth exch def /txtwide 1000 def translate showborder { 0 1 figwidth 2 sub figheight 10 sub stdfigrad roundbox 0.5 setlinewidth showboxgrays {gsave bestgray boxgrays setgray fill grestore} if stroke gsave 0 figheight figwidth 2 sub -13 stdfigrad roundbox 0.5 setlinewidth showboxgrays {gsave bestgray 0.95 setgray fill grestore} if stroke grestore } if /font; /Palatino-Bold 10 gonzofont showtitle { gsave 5 figheight 10 sub moveto 10 0 rlineto -5 8.66 rlineto closepath fill grestore 20 figheight 10 sub font; figname cl} if /bw figwidth def /bt figheight def /bl 0 def /bc figwidth 2 div def /xpos 20 def /ypos bt 20 sub def /linestring linestring2 def % needed to run interference /cstretch 0 def /sstretch 0 def /pmrun 0 def /colcheck {} def 3 1 roll translate dup scale % adjust figure position mark figproc cvx exec cleartomark stdsnap restore justx 4 jsave put } def % grayfig two has a title box /grayfig2rad 3 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 13 figwidth 2 sub figheight 5 sub grayfig2rad roundbox 0.4 figheight 28 sub moveto figwidth 1.8 sub 0 rlineto gsave showboxgrays {boxgrays}{1} ifelse setgray fill grestore gsave newpath 0 figheight 6 sub moveto figwidth 2 sub 0 rlineto 0 -22 rlineto figwidth 2 sub neg 0 rlineto closepath white grayshade 1 ne {0.25 setgray} if fill grestore [2 0 1 1] superstroke } if /font7 /Helvetica-Bold 9 gonzofont showtitle {black grayshade 1 ne {white} if figwidth 2 div figheight 20 sub font7 figname cc} if black /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 % needed to run interference 3 1 roll translate dup scale mark figproc cvx exec cleartomark stdsnap restore justx 4 jsave put } def %%%%%%%%%%%%%%%%%%%%%%%%% /title { save /snap11 exch def mark % this centers and makes room for blurb cms 2 div yinc 2 mul translate -3 yinc neg translate % center in column 0 0 12 setgrid % 30 30 showgrid /cstretch 0.03 def /sstretch 0.2 def /font1 /Revue [2.8 0 0 2.81 0 0] gonzofont % was -.85 down /font2 /Revue 1 gonzofont /font3 /Revue 1.15 gonzofont /yinc 3.7 def /kern 0.1 def bestgray 0.9 setgray 1 setlinecap 1 setlinejoin 0.5 [ 2 8 2 10.5 28 10.5 28 8 ] roundpath [.6 showadgrays {0.33}{0} ifelse .3 .8] superstroke showadgrays {0.33} {0} ifelse setgray 10 9.25 10 2.5 0.2 roundbox gsave grayshade setgray fill grestore line2 stroke grestore black [.6 .3 .3 .8] superstroke black 0.5 [ 2 5.5 2 3 28 3 28 5.5 ] roundpath [.6 .3 .3 .8] superstroke % 9.75 1.95 10.5 2.1 0.2 roundbox % long seventeen % 33 = 12 % /numboxwidth 10.75 def font2 /numboxwidth {0 0 resbinnum cw 1.6 add} def % autobox 15 numboxwidth 2 div sub 1.95 numboxwidth 2.1 0.2 roundbox gsave grayshade setgray fill grestore 0.25 setgray line2 stroke grestore /yinc 3.7 def showadgrays {0.3}{0} ifelse setgray 15 10.1 (|2Don Lancaster's) cc 15 10.1 3.7 2 mul sub % (|2number|k|k forty nine) cc font2 resbinnum cc 0.3 setgray 15 10.1 3.7 sub 0.85 sub (|1RESOURCE BIN) cc black 15 0 resbinname cc grestore cleartomark snap11 restore } def /stdfig2 { gsave 0 6 translate /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 5 figwidth 2 sub figheight 11 sub stdfigrad roundbox gsave showboxgrays {boxgrays}{1} ifelse setgray fill grestore [2 0 1 1] superstroke } if /font7 /Helvetica-Bold 9 gonzofont showtitle {figwidth 2 div 12 font7 figname cc} 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 % needed to run interference 3 1 roll translate dup scale mark 0.33 setgray % tinton figproc cvx exec cleartomark stdsnap restore justx 4 jsave put grestore } def % end % nv template HUH %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /ad { xpos 20 sub ypos 605 sub translate %%%% This code puts in the reader service number %%%% /showreaderservicenumber true def /readerservicenumber 146 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.33}{0} ifelse setgray % 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-NV|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 /yinc yinc .988 mul def % fudge 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 |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|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$75.00|5 |b |a |h |C|/tinton1 |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 |C|/tinton1 |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|/tinton1 |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 (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 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|/tinton1 |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|/tinton1 |6THE|j|j C|kASE|j|j A|kGAINST|j|j P|kA|kTENTS |h|F|a |5For most individuals, patents are virtually certain to result in a net loss of sanity, energy, time, and money. \ This reprint set shows you Don's tested and proven real-world alternatives. |828.50|5 |b |a |h |C|/tinton1 |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|/tinton1 |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|/tinton1 |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 % (FREE Catalogs: |/surl http://www.tinaja.com|/tinaja ) cc } if } def % %%%ZZZZ%%%%%%%%%%%%%% URL PATCHES %%%%%%%%%%%%%%%%%%%%%%%%%%%% % try a dictionary method << /alphadem (http://www.tinaja.com/glib/alphadem.pdf) /awebutil (http://www.tinaja.com/text/awebutil.html) /bodcat (http://www.tinaja.com/text/bodcat.html) /coloriz2 (http://www.tinaja.com/text/coloriz2.ps) /disktool (http://www.tinaja.com/psutils/disktool.ps) /fuzzybez (http://www.tinaja.com/text/fuzzybez.html) /grabrefs (http://www.tinaja.com/glib/grabrefs.ps) /graburls (http://www.tinaja.com/psutils/graburls.ps) /insort (http://www.tinaja.com/psutils/insort.ps) /jpeg2pdf (http://www.tinaja.com/text/jpeg2pdf.html) /lineareq (http://www.tinaja.com/psutils/lineareq.ps) /linkpdf1 (http://www.tinaja.com/linkpdf1.html) /pfa2pfb (http://www.tinaja.com/psutils/pfa2pfb.ps) /ng100 (news:///sci.geo.satellite-nav) /ng101 (news:///sci.engr.surveying) /ng10 (news:///rec.radio.amateur.antennas) /ng20 (news:///sci.physics.electromag) /ng30 (news:///uk.radio.amateur) /ng40 (news:///sci.electronics.design) /ng50 (news:///sci.electronics.equipment) /ngps (news:///comp.lang.postscript) /ngpdf (news://comp.text.pdf) /adobe (http://www.adobe.com) /ghost (http://www.cs.wisc.edu/~ghost) /acquired (http://www.acquiredknowledge.com) /penwell (http://www.penwell.com) /emerge (http://www.pdfzone.com) /enfocus (http://www.enfocus.com) /gerber (http://www.gspinc.com) /hewpack (http://www.hp.com) /alchemy (http://www.handmadesw.com) /microchip (http://www.microchip.com) /parallax (http://www.parallaxinc.com) /techpool (http://www.techpool.com) /videonics (http://www.videonics.com) /winbatch (http://wwwwww.windowware.com) /resbn92.psl (http://www.tinaja.com/glib/resbn92.psl) /wb7awk (http://www.boatanchors.com) /pixi (http://www.pixi.com/~jenkins/collins) /fair (http://www.fairradio.com) /ebay (http://www.ebay.com) /hallicraft (http://www.hallicrafters.org) /bc610 (http://www.kong.net/radio) /docky (http://home.earthlink.net/~docky/doc.html) /kb9jja (http://members.accessus.net/~dwentz/kb9jja/heathkit) /nick (http://epsilon.cs.unc.edu/~nick/hobbies.html) /w1ux (http://www.geocities.com/Paris/1769/boatanchor01.html) /badger (http://www.telalink.net/~badger/millist/mi.html) /surplusal (http://www.qsl.net/w3ugd) /mts (http://www.nashville.net/~badger/millist/mi.html) /Robertson (http://www.arrowweb.com/M1/otr/) /doghouse (http://margo.student.utwente.nl/~wel/tek.htm) /radioroom (http://www.mindspring.com/~johnmb/radio_rm.htm) /rovero (http://www.connix.com/~provero/rovero.htm) /tubego (http://www.primenet.com/~rfwatts/tubes.html) /vintage (http://www.w7fg.com) /wa3key (http://www.wa3key.com/collins.html) /wireless (http://www.vistech.net/users/w1fji/museum.html) /wa4kcy (http://ourworld.compuserve.com/homepages/sweetbay) /zydeco (http://www.communique.net/~zydeco) /stanbook (http://www.amazon.com/exec/obidos/ISBN=0963307150/donlancastersgurA/) /rrs (news:///rec.radio.swap) /rap (news:///rec.audio.pro) /rarp (news:///rec.antiques,radio+ph) /hamboat (news:///rec.radio.amateur.boatanchor) /aga (news:///alt.guitar.amps) /ser (news:///sci.electronics.repair) /see (news:///sci.electronics.equipment) >> {mark exch /eurl cvx ] cvx def} forall % convert to defs % patch definitions... /maildon {(mailto:don@tinaja.com) eurl } def /tinaja {(http://www.tinaja.com) eurl } def /consult {(http://www.tinaja.com/consul01.html) eurl} def /netscape {(http://www.netscape.com) eurl } def /adobe {(http://www.adobe.com) eurl } def /parallax {(http://www.parallaxinc.com) eurl } def /coriolis {(http://www.coriolis.com) eurl } def /hottalk {(mailto:hottalk@printer-net) eurl } def /redmark {(http://www.redmark.co.nz) eurl} def /colostate {(http://holly.colostate.edu/~sheilas) 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 /hack86 /gramtram /muse113 /rev1001 /bustpat /pubalts /boundet /postflut /hack04 /hack84 /resbn73 /muse90 /muse128 /resbn06 /resbn81 /resbn87 /resbn82 /resbn80 /muse112 /muse113 /muse137 /muse138 /hack64 /auction /hyspline /sixclick /distlang /muse140 /muse89 /flutwump /postflut /fluttools /muse141 /stezines ] {setglib} forall [ /magsn01 /patnt01 /ismm01 /synlib01 /tinaja01 /resbn01 /muse01 /blat01 /picwb01 /weblib01 /amlink01 /beewb01 /dntkwb01 /h2gas01 /consul01 /pseudo01 /magic01 /hack01 /post01 /synlib01 /flut01 /barg01 /santa01 /resbn25 /resbn57 /info01 /guru01 /psweb01 /cubic01 /bod01 /weblib01 /webwb01 /acrob01 /syn01 ] {sethtml} forall [ /parallaxinc /paperplus /dejanews /adobe /mediafinder /alps /conde /alsina-inc /altavista.digital /scambusters /amazon /mediafinder /robotstore /bentleysauction] {setweb} forall % special green for end blurb /amlink01g {(http://www.tinaja.com/amlink01.html) eurlg2} def /syncatg {(http://www.tinaja.com/synlib01.html) eurlg2} def /sgia {(http://www.sgia.org) eurl} def /crm1 {(news:comp.robotics.misc) eurl} def /crm2 {(news:comp.robotics) eurl} def /crm3 {(news:comp.robotics.research) eurl} def /govsurp {(http://131.87.1.51/) eurl} def /info01g {(http://www.tinaja.com/info01.html) eurlg} def % special for 71 /acronews {(news:comp.text.pdf) eurl} def /acroread {(http://www.adobe.com/prodindex/acrobat/readstep.html) eurl} def /alta {(http://www.altavista.digital.com) eurl} def /dominis {(http://www.dominis.com/Zines) eurl} def /ejournal {(http://www.edoc.com/ejournal) eurl} def /parallax {(http://www.parallaxinc.com) eurl} def /homeart {(http://www.homearts.com/affil/ahi/main/ahihome.htm) eurl} def /amazon {(http://www.amazon.com) eurl} def /meer {(http://www.meer.net/~johnl/e-zine-list) eurl} def /scweb01 {(http://www.tinaja.com/scweb01.html) eurl} def /blackrange {(http://www.zianet.com/blackrange/lodge.html) eurl} def /blond {(http://www.winn.com/pwinn/humor/index/html) eurl} def /trader {(http://www.traderonline.com) eurl} def /cowmoo {(http://www.qtm.net/~geibdan/framest.html) eurl} def /subgen {(http://sunsite/unc.edu/subegnius) eurl} def /c2000 {(http://www.classifieds2000.com) eurl} def /dilbert {(http://www.unitedmedia.com/comics/dilbert) eurl} def /tinaja {(http://www.tinaja.com) eurl} def /medweb {(http://www.gen.emory.edu/medweb) eurl} def /factsheet {(http://www.well.com/conf/f5/f5index2.html) eurl} def /fmfind {(http://wmbr.mit.edu/stations/locate.html) eurl} def /four11 {(http://www.Four11.com) eurl} def /freecat {(http://catalog.savvy.com) eurl} def /freenrg {(http://www.eskimo.com/~bilb/freenrg/frng) eurl} def /healthy {(http://www.healthy.net) eurl} def /bentley {(http://www.bentleysauction.com) eurl} def /eeweb01 {(http://www.tinaja.com/eeweb01.html) eurl} def /hotbot {(http://www.hotbot.com) eurl} def /infer {(http://www.inference.com/infind) eurl} def /info01 {(http://www.tinaja.com/info01.html) eurl} def /persian {(http://www.persiankitty.com) eurl} def /ccodes {(http://www.Four11.com/cgi-bin/Four11Main?Country) eurl} def /thelist {(http://thelist.iworld.com) eurl} def /keelynet {(http://www.keelynet.com) eurl} def /jobs {(http://www.datamation.com/PlugIn/jobs/jobs.html) eurl} def /kelly {(http://www.kbb.com) eurl} def /lindsay {(http://www.keynet.net/~lindsay) eurl} def /lookup {(http://www.lookupusa.com) eurl} def /bell800 {(http://attnet/dir800) eurl} def /mapquest {(http://www.mapquest.com) eurl} def /pic500 {(http://www.tinaja.com/pic500) eurl} def /wpsearch {(http://www.wp.com/resch/search.htm) eurl} def /microchip {(http://www.microchip.com) eurl} def /mohotta {(http://www.mohotta.com) eurl} def /acrob01 {(http://www.tinaja.com/acrob01.html) eurl} def /movie {(http://us.imdb.com) eurl} def /booksol {(http://www.cs.cmu.edu/books.html) eurl} def /oxbridge {(http://www.mediafinder.com) eurl} def /paml {(http://www.NeoSoft.com/Internet/paml) eurl} def /patent {(http://patent/womplex.ibm.com) eurl} def /elements {(http://www2.shef.ac.uk/~chem?web-elements) eurl} def /picup01 {(http://www.tinaja.com/picup01.html) eurl} def /yahoo {(http://www.yahoo.com/bin/top2?122.25) eurl} def /azstream {(http://wwwdaztcn.wr.usgs.gov/rt-cgi/gen_tbl_pg) eurl} def /saucer {(http://www.mcs.com/~kvg/smear.htm) eurl} def /scott {(http://www.seetron.com) eurl} def /billb {(http://www.eskimo.com/~billb) eurl} def /shepard {(http://home.att.net/~dennis.shepard) eurl} def /barg01 {(http://www.tinaja.com/barg01.html) eurl} def /switchboard{(http://www.switchboard.com/cgiqa.dll?MG=) eurl} def /techweb {(http://techweb.cmp.com/eet/docs) eurl} def /govsurp {(http://131.87.1.51) eurl} def /zipcode {(http://www.usps.gov/ncsc) eurl} def /vanagon {(mailto:Vanagon@gerry.sdsc.edu) eurl} def /wsrn {(http://wsrn.com) eurl} def /launch {(http://www2com.com/~upfront/launch) eurl} def /webann {(http://www.ep.com/faq/webannounce.html) eurl} def /whois {(http://www.internic.net/cgi-bin/whois) eurl} def /internic {(http://www.internic.net) eurl} def /weblib01 {(http://www.tiaja.com/weblib01.html) eurl} def /whowhere {(http://www.whowhere.com) eurl} def /deja {(http://www.dejanews.com/home_ps.shtml) eurl} def /newslist {(http://www.tinaja.com/text/newslist.html) eurl} def /thomas {(http://www.thomasregister.com/index.html) eurl} def /selfref {(http://www.tinaja.com/glib/resbn71.pdf) eurl} 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 /lime 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 % 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 /eurlg2 {mark % start deferred proc exch % position url string /lime cvx 0.33 /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 url patches %%%%%%%%%%%%%%%%%%% end resbin patches %%%%%%%%%%%%%%% %! % Column 88 text starts here % X E % Z /wanttousepicojustify true def % this globally turns picojust on or off guru3 begin /resbinname (Exploring some PostScript possibilities.)def /resbinnum (number|k|k ninety two) def /colnum (92) def end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wanttousepicojustify false 40 array dictstack {/^picoset known or} forall not and { % FILL JUSTIFICATION IMPROVER version 3.0, November 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.38 def % percentage of excess space to be internalized /picothresh 0.03 def % percentage/100 increment per font change /picomax 0.08 def % percentage/100 max stretch (limits fat chars) /^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 dup picomax ge {pop picomax} if 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 grestore ^jwd ^rwd add 0 rmoveto} ifelse} bind def} if %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % This is a titling and tracking box used for the figures.. /ttheight 24 yinc mul def /ttwidth 240 def /ttrad 3 def /ttbox {/ttmsg exch def /ylimit -9999 def /colbot -9999 def /ybot -9999 def xpos txtwide ttwidth sub 2 div add ypos ttheight sub 2 add 10 setgrid 0 ttheight 10 div 1.5 sub 0.5 sub moveto ttwidth 10 div 0 rlineto 0 0 ttwidth 10 div ttheight 10 div ttrad 10 div roundbox gsave 0.95 setgray fill grestore % temp whitebox, gray top gsave newpath 0 0 moveto 0 ttheight 10 div 1.5 sub 0.5 sub rlineto ttwidth 10 div 0 rlineto 0 ttheight 10 div 1.5 sub 0.5 sub neg rlineto closepath white fill grestore [0.2 0 0.1 1] superstroke % 14 8 showgrid /cstretch 0.02 def /sstretch 0.02 def /font1 /Helvetica-Bold 0.85 gonzofont font1 ttwidth 10 div 2 div ttheight 10 div 1.3 sub ttmsg cc } def /makeroom {/ypos ypos ttheight sub yinc 0 mul sub def} def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% guru3 starttemplate /dropindent 24 def /dropcount 3 def /Zmacro {/ypos ypos 2 add def 0 setlinewidth xpos ypos moveto txtwide 0 rlineto stroke /ypos ypos -2 add def} def % hair rule /Xmacro {/txtwide txtwide 45 sub def /txw {txtwide} def /xpos xpos 30 add def} def /Ymacro {/txtwide txtwide 45 add def /txw {txtwide} def /xpos xpos 30 sub def} def /tabs [110] def /font: /Palatino-Roman [10.5 0 0 10.51 0 -.5] gonzofont % lowered bullets /font7 /Palatino-Bold 9 gonzofont /font: /Palatino-BoldItalic 9 gonzofont % slant titles /font8 /Helvetica-Narrow 9 gonzofont /font9 /Symbol 9 gonzofont /kern 0.7 def /square1 {gsave line1 xpos ypos 4 add mt 34 yinc mul 2 sub u txtwide r 34 yinc mul 2 sub d txtwide l grestore} def /square2 {gsave line1 xpos ypos 4 add mt 26 yinc mul 2 sub u txtwide r 26 yinc mul 2 sub d txtwide l grestore} def % this is a special effect that boxes the figure three text /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 /figboxlink {gsave currentpoint translate -3 -3.25 mt 11 pu 51 pr 11 pd closepath line1 stroke grestore} 0 topstrlist /tabs [77 ] def /resettabs {/tabs[65] def} def startgonzo |a O |b ur usual reminder here that the |2Resource Bin|1 is now a two-way column. You can get tech help, consultant referrals and off-the-wall networking on nearly any electronic, |2tinaja questing|1, \ personal publishing, \ money machine, or computer topic by calling me \ at |4(520) 428-4073|1 weekdays |48-5|1 Mountain \ Standard Time.|p Be certain to frequently check out my new |2Guru's Lair|1 \ web site \ you'll find at (where else?) |2|/surl www.tinaja.com|1|/tinaja This is the place you'll go for \ instant tech answers. Among the many files in our \ library, you will find complete reprint sets for all of \ the |/surl |2Resource Bin|1|/resbn01 and other columns. Plus a brand \ new |/blueon Research InfoPack Service|/info01 . You will get the best results if you have \ both |/surl |2Netscape Communicator|1|/netscape \ and |/surl |2Acrobat|/adobe |/surl Reader 3.0|1|/adobe installed. |c Some PostScript Opportunities |d The |2PostScript|1 language was first developed by John \ Warnock of |/surl |2Adobe|/adobe |/surl Systems|1|/adobe . \ PostScript is a reverse Polish, stack \ oriented, graphic, procedural, \ reentrant, resolution independent and dictionary based, \ device independent, open, job processed, \ redefinable and interpreted computer \ language. PostScript is the second cousin of |2Forth|1. Three times \ removed and five times disowned. You can think of it as \ Forth without the religion. Or else as a fanatic-free \ super |4TEX|1. PostScript is easily learned, lots of \ fun, and can be an absolute joy to work with. As a minor and almost trivial side effect, PostScript \ just happens to excel at dirtying up otherwise clean \ sheets of paper. Thus, PostScript has become |2the|1 \ industry standard for high quality document \ publishing. Especially for web publishing, the |4CD|1 \ distribution of technical data, and traditional book and \ magazine workflow control. And anywhere else superb \ quality and full device independence is a must. Most people seem to prefer to use PostScript invisibly \ buried in such ap packages as |2Acrobat |5PDF|1, \ |2Pagemaker|1 or |2Illustrator|1. But the \ more you learn about PostScript, the more you can do \ with it. And the easier it gets to deal with any problems \ that may come up. Further, when you |2really|1 start to \ look at what PostScript is and what it can become, the \ possibilities become truly mind boggling. This inch square lime graphics box lets you sample some of \ the flavor of PostScript programming\274 |h|z|2|/staytint1 %! |t% header goes here .8 1 .8 setrgbcolor |t% use lime tint newpath |t% start new graphic 100 100 moveto |t% position on page 0 72 rlineto |t% go up one inch 72 0 rlineto |t% go right 0 -72 rlineto |t% go down closepath |t% finish box fill |t% tint box showpage |t% finish job |h|1|p|/black As you can see, a typical PostScript program is an ordinary \ |4ASCII|1 textfile. Comments will start with a "%". Each \ PostScript procedure is |2first|1 given all the info it \ needs to complete its task. This file then gets sent \ to a PostScript speaking device such as a host based \ interpreter or a printer. Let's look at some great PostScript possibilities that you \ just might want to explore further\274 |c Adobe Acrobat |d A newer simplified "Just the facts, Ma'am" variant of \ PostScript is called |2Acrobat|1. With an Acrobat or \ a "|4.PDF|1" file, only your essential info needed to \ actually create a graphic or a page is included. \ PostScript can be converted into Acrobat by using \ Adobe |2Distiller|1 or certain other program \ generators. Distilled code might be thought of as \ being "pseudocompiled". Acrobat often runs much faster and is \ more compact than PostScript. Acrobat offers several font options. Such as towing \ the exact needed fonts along internally. \ Or faking the results as best as possible. A \ free reader is needed to view any Acrobat |4PDF|1 file. These \ are available at |/surl |2www.adobe.com|1|/adobe or \ zillions of places on the web. To create your own \ |4.PDF|1 files, add links and notes, or otherwise get \ fancy, you will need the full Acrobat package. Student \ prices start at |4$70. |c GhostScript |d At one time, there were dozens of imitation clone \ versions of PostScript out there. Whose quality ranged \ from awful on down to less \ than abysmal. One version insisted on chopping the \ tail of |/surl |2Meowwrrr|1|/syncat01 , my \ |2Synergetics|1 Puss de Resistance. A shareware version of PostScript survives and has \ finallly gotten quite good. This is \ |2GhostScript|1 from |2Alladin Systems|1. GhostScript is \ especially well suited to |4LINUX|1 systems. \ Yes, the full source code is available, but there \ are commercial use restrictions. You can freely download \ GhostScript through |/surl \ |2www.tinaja.com/psweb01.html|1|/psweb01 links. Although quite useful, I very much prefer Acrobat \ over GhostScript for my personal \ professional uses. |c Gonzo Utilities |d Quite a few years back, I created a sequence of my |2Guru \ Gonzo|1 utilities which I personally still use to this \ day for all my graphics layouts and all my \ PostScript-as-language projects. The code provides ultra \ high quality text justification, hanging \ punctuation, a sophisticated three stage \ picojustify, individual kerning control, and great \ electronic schematic icons. Combined with my insider secret hyphenation algorithm that \ you are viewing here. My Gonzo Utilities are utterly and totally device \ independent. Er, on the other hand, the utilities are based \ on certain ancient embedded typesetting commands, are \ not |4WYSIWYG|1 and do have a very steep learning \ curve. The documentation also needs work. You can sample Gonzo sourcecode when you view any of \ the |4.PSL|1 files in |/surl \ |2www.tinaja.com/muse01.html|1|/muse01 You can find your Gonzo sourcecode \ for this column in |/surl \ |4RESBN92.PSL|1|/resbn92.psl More Gonzo utility examples are in the |/surl |2PostScript \ Beginner Stuff|1|/synlib01 series. |c PostScript and the Web |d PostScript's Acrobat utterly, totally, and ridiculously \ blows |4HTML|1 away on all counts. First and foremost, \ you gain absolute and total control over |2exactly|1 \ what your viewer sees. Often with compressed \ fast viewing |2single|1 file sizes which \ average less than |411K|1 per \ fancy formatted page. Unlimited top quality fonts. \ With magnification and greatly \ improved anti-aliasing. Plus those usual hot linking, notes, and forms capabilities. A simple \ link verification. And tables in spades. You also pick up fast downloading through |2byte range \ retrival|1, in which only your required info gets grabbed \ and presented. Thus, you are viewing the first page while the \ rest of your doc downloads invisibly. You do have to work with your |4ISP|1 to optimize your web \ presentation of Acrobat files. Activating a byte range \ retrival is a must. As is picking one of the many site \ search engines that can handle both Acrobat and |4HTML|1. Much more on these topics at my |/surl \ |2www.tinaja.com/weblib01.html|1|/weblib01 |c PostScript as Language |d The majority of users seem to apply PostScript to \ strongly graphic "page layout" or "printer description" \ uses. But PostScript is in reality a totally |2general purpose|1 \ computer language. One that holds its own \ against most any competitor. While solving a \ wide variety of problems. The PostScript language generally has |2four|1 possible \ output formats\274 |h|1|p|/staytint1 (1) A visible page layout. (2) Recordable text messages. (3) Files written to disk or |4CD|1. (4) I/O control allowed by host. |h|1|p|/black While little appreciated, PostScript can easily, \ quickly, and conveniently read or write disk files in \ most any format and most any language. This is \ particularly useful when dealing with ancient dino \ mainframe files.|/red Or getting between \ incompatible formats. Or emulating anything. Or \ digging really down into web log files to get at the \ goodies often ignored by commercial reporting software. Also little known or appreciated is the fact that |/tinton1 the Acrobat \ Distiller|1 is |/tinton1 really a full featured \ and host based |/tinton1 PostScript interpreting computer! To use PostScript as a host-based general purpose \ computer\274 |h|1|z|/lime |/staytint1 (1) Write commands with an editor. (2) Save as standard ASCII textfiles. (2) Send commands to |2Distiller|1. (3) Gather up all of your results. |h|p|/black |1 As a simple PostScript-as-language example, suppose \ we want to find the square root of |435|1. Using your \ favorite word process or editor, you enter the following \ program\274 |h|z|/staytint1 %! |t% header goes here 35.000 sqrt |t% find square root == |t% report result |h|p|/black Next, carefully save your file as a standard |4ASCII|1 \ textfile. Do |/tinton1 |2not|1|/tintoff save in any proprietary word process \ format! Now send this unformatted textfile to the \ |2Distiller|1 module of |2Adobe Acrobat|1. Or \ use |2GhostScript|1. The |45.91608|1 result \ appears in the distiller \ message box. |/beige In a "real" use, you would save this result \ for further calculations, write it to a disk file, or \ let it help you create a graphic image. You'll also have the older option of using any genuine PostScript \ printer as a general purpose computer. This has \ the advantage of letting you do |2crossporting|1 for \ real time control. You can also "fill" the printer once \ and let it grind away all night without tying up your \ host as well. This works even better when the printer has \ its own internal PostScript hard disk. More on these \ |/surl |2Book-on-demand|1|/bod01 applications at |/surl \ |2www.tinaja.com/bod01.html|1|/bod01 . Two way comm is usually required between a host and \ printer for this option to be genuinely useful. |4USB|1, \ Appletalk, Ethernet, or Serial are the preferred \ choices. We now have a fast bidirectional parallel \ option as well. But note that stock early PC ports went \ out of their way to keep you from accepting incoming \ data on their parallel port lines.|/red |/staytint1 |2Do not try to use any printer-based PostScript-as-language \ while using one way communications!|1 |/lime |/black |2Download Mechanic|1, |2Transverter Pro|1, or \ that |/surl |2Adobe Print Driver|1|/adobe have \ "send file" options that let you use a printer \ as a general purpose computer. |c Some Examples |d Let's look at a few of the ways I've used \ PostScript-as-language to easily solve tough problems. I \ routinely use raw PostScript-as-language for all of my \ artwork in all my publications. Many \ figures actually do what the artwork suggests. \ Fractals are fractals, sinewaves are sinewaves, \ luminosity uses luminosity math, chrominance \ is chrominance and so on. You can review the many |4.PSL|1 files in |2|/surl \ |2www.tinaja.com/muse01.html|1|/muse01 to see exactly \ how well this works out. I've found PostScript to end up superb \ for everthing from my ultra high quality schematic diagrams \ to printed circuit layouts to |2Smith Charts|1 to \ engineering analysis to |/surl magic sinewaves|/magic01 \ to math model simulation. One client came to me for a new standard |4HDTV|1 video \ resolution test chart. Besides its extensive detail that \ had to be exact and easily distributed as a compact \ multiple-sized file, a lot of hairy hyperbolic math \ was needed for the expanding resolution lines. A careful analysis of how close you can fit hyperbolas \ with PostScript's powerful |2Bezier|1 curves is found as my \ |/surl |4HYSPLINE.PDF|1|/hyspline This is one of many dozens of advanced Bezier files \ in our |/surl \ |2www.tinaja.com/cubic01.html|1|/cubic01 library. A second management consultant client came right out of \ |/surl |2Dilbert|1|/dilbert . They wanted |2dynamically allocated|1 \ charting that proactively leverged their \ market driven synergies for central mission \ statements and interactive responsive programmable \ matrix techniques. Really. Starting with raw spreadsheet and database data out of \ an ancient dino mainframe. All to the same sheet size, \ regardless of the number of mission \ priorities, employees, responsibilities, and such. All in all, \ rather trivial with raw PostScript. Here's some PostScript-as-language examples you \ might explore on your own. These mentioned files and great \ heaping bunches more all do show up at \ |/surl |2www.tinaja.com/post01.html|1|/post01 \274 |h|z|/staytint1 |/resettabs |/surl |8ALPHADEM.PS|1|/alphadem |t|/tinton1 alpha transparey |/surl |8AWEBUTIL.HTML|1|/awebutil |t|/tinton1 pdf web utilities |/surl |8BODCAT.HTML|1|/bodcat |t|/tinton1 automatic catalogs |/surl |8COLORIZ2.HTML|1|/coloriz2 |t|/tinton1 web auto colorizer |/surl |8DISKTOOL.PS|1|/disktool |t|/tinton1 PS disk utilities |/surl |8FUZZYBEZ.HTML|1|/fuzzybez |t|/tinton1 fuzzy curve fitter |/surl |8GRABREFS.PS|1|/grabrefs |t|/tinton1 referral log reader |h |/surl |8GRABURLS.PS|1|/graburls |t|/tinton1 web link checker |/surl |8INSORT.PS|1|/insort |t|/tinton1 insertion sorter |/surl |8JPEG2PDF.HTML|1|/jpeg2pdf |t|/tinton1 jpeg ps converter |/surl |8LINEAREQ.PS|1|/lineareq |t|/tinton1 lin equation solver |/surl |8LINKPDF1.HTML|1|/linkpdf1 |t|/tinton1 html/pdf link demo |/surl |8MUSE89.PDF|1|/muse89 |t|/tinton1 Fibonacci sunflowers |/surl |8PFA2PFB.PS|1|/pfa2pfb |t|/tinton1 font conversion util |h|p|/black A reminder: You'll first \ bring your PostScript-as-language file up in an editor or word processor. Study it \ and make sure you know what it does and how it is \ supposed to do it. Modify your file and save it under a \ new filename. Then send the file to Distiller or \ GhostScript to create your needed output results. More on PostScript-as-language is in \ |/surl |4DISTLANG.PDF|1|/distlang , |/surl |4SIXCLICK.HTML|1|/sixclick , \ and many similar files you'll find at \ |/surl |2www.tinaja.com/post01.html|1|/post01 |c A Scripting Combo |d At first, PostScript does not seem to be \ very interactive. It prefers to work in a job mode, \ processing fixed and pre-entered data. A lot of \ keystrokes can be involved in entering data and updating \ screen displays. Both of these problems can be eased by \ going to a |2supervisory \ controlling program|1. A new scripting language known as |2WinBatch|1 is \ available through |2Wilson WindowWare|1 at \ |/surl |2www.windowware.com|1|/winbatch . WinBatch is a potent macro scripting \ language that gives you automation for Windows or \ |4NT|1. Using WinBatch, a single hot key lets you put source \ code and object code in two windows on screen at the \ same time. One click regenerates the images at any \ time. Often in only a few seconds for all the simpler jobs. \ Among other benefits, you can keep Acrobat resident in \ the background rather than having to reboot it all the \ time. Which ends up much faster and far more convenient. I'm still in the process of exploring WinBatch as a \ PostScript front end, so I don't have much ready-to-use \ code just yet. But do stay tuned for future examples. \ These two working with each other sure look like they will end \ up as a powerful team. |c PostScript Robotics |d I like to call any robotic ap that can cut, chew, or spit \ a |/tinton1 |2flutterwumper|1. Stuff like printed circuit drills, \ sign cutters, animation stands, |4CAD/CAM|1 mills, \ |/surl |2Santa Claus|1|/santa01 machines and paint robots, hexapods, \ embroidery setups, and engravers. All of these share those \ common problems of being able to cut circles or fancy \ font paths, make very precise size and scaling \ adjustments, compensate for tool path widths and wear, and possibly \ having elaborate coordinate transformations. The PostScript language is ideal to provide such \ solutions. Especially if ultra low cost is a \ goal. The secret trick is to split up your flutterwumper into two parts. \ You let PostScript do all the really hard stuff on a host \ computer. While providing for an absolute minimum of \ |4PIC|1 level smarts on the device itself. PostScript is \ superb at writing to most any file or comm format. \ The industry standards such as |/surl |2Gerber File Format|1|/gerber or |/surl |5HPGL|1|/hewpack \ are easily accomodated. But for those really low end aps, a very \ simple |2meta|1 language might be used instead. \ Plain old serial |4ASCII|1 characters that'll do \ only the lowest level of fundamental machine steps. Ferinstance the numeral "0" might mean "go one \ resolution step to the east. "1" heads to northeast, "2" \ to north, and so on around till "7" which heads \ southeast. Other commands might include "H" for home, \ "U" for pen (or cutter) up, "D" for pen down, "Q" for \ quit, "R" for repeat, or "X" for a breaking debug tool. Serial comm speed is more than fast enough for pretty near all \ mechanical flutterwumper apps. The beauty of this new PostScript to meta langage scheme is \ that the full power of PostScript, fancy fonts, clip art \ libraries, and all elaborate layout tools all are \ available for you. While keeping your \ custom flutterwumper parts to a bare minimum. One ultra low cost printed circuit drill with \ PostScript robotics potential is made by |2Gordon \ Robineau|1. Some further info appears at \ |/surl |4MUSE140.PDF|1|/muse140 For intro flutterwumping tutorials, \ |/surl |4POSTSFLUT.PDF|1|/postflut , |/surl |4FLUTWUMP.PDF|1|/flutwump , or \ |/surl |4FLUTTOOLS.PDF|1|/fluttools as openers. Bunches of links and \ downloadable files are in my |/surl fluttutterwumper|/flut01 , my |/surl Santa \ Claus|/santa01 , and |/surl |4PIC|1|/picup01 libraries. Found respectively \ at\274 |h |/surl |2www.tinaja.com/flut01.html|1|/flut01 |/surl |2www.tinaja.com/santa01.html|1|/santa01 |/surl |2www.tinaja.com/picup01.html|1|/picup01 |h For more on |4PIC|1's, check |/surl |2Microchip|1|/microchip and |/surl |2Parallax|1|/parallax . |c Subpixel and Grayscaling |d "Book appliances" and Dynabooks and laptops and whatever \ are about to blow traditional print magazines out of the \ water big time. The secret enabling technology centers on new \ ways of dramatically improving small text legibility. \ Two of these center on |2subpixel|1 techniques and \ very precisely |2grayscaled|1 small fonts. PostScript is a highly useful way to explore or develope \ these concepts. See |/surl |4MUSE141.PDF|1|/muse141 \ or |/surl |4STEZINES.PDF|1|/stezines \ for further details. |c For More Help |d The best way to get started with PostScript is with the \ "red" |2PostScript Reference Manual|1 and that old "blue" \ |2PostScript Tutorial & Cookbook|1. Info is at \ |/surl |2www.tinaja.com/amlink01.html|1|/amlink01 Useful PostScript resources include |/surl |2Enfocus|1|/enfocus , |/surl |2Emerge|1|/emerge , |/surl |2Image Alchemy|1|/alchemy , and \ |/surl |2Videonics|1|/videonics . The latter is very strong in \ video, especially titlers. Lots of links to Acrobat plug-ins \ can be reached by way of |/surl |2www.tinaja.com/acrob01.html|1|/acrob01 Some useful newsgroups here are |/surl \ |2comp.lang.postscript|1|/ngps and |/surl \ |2comp.text.pdf|1|/ngpdf . My |/surl |2Guru's Lair|1|/tinaja library pages have \ PostScript tutorials and examples. Uh, start off using \ the PostScript library page at |/surl \ |2www.tinaja.com/post01.html|1|/post01 , or else that Acrobat \ library page found at |/surl \ |2www.tinaja.com/acrob01.html|1|/acrob01 . Next, try that \ Flutterwumper library located at |/surl \ |2www.tinaja.com/flut01.html|1|/flut01 , and the new \ Webmastering library you'll find at |/surl \ |2www.tinaja.com/wewblib01.html|1|/weblib01 . My PostScript consulting, training, and seminar \ services are available per |/surl \ |2www.tinaja.com/info01.html|1|/info01 as well as at \ |/surl |2www.tinaja.com/consul01.html|1|/consul01 And including associates \ with worldwide in-plant capabilities. Let's hear from you. There's some exciting new \ possibilities here. |/tinton1 |-F|1 |/staytint |Z |2Microcomputer pioneer and guru Don |/staytint Lancaster is the author \ of |535|2 books and countless tech articles. Don maintains his \ no-charge |5US|2 tech helpline found at |5(520) 428-4073|2, \ besides offering all of \ his own \ |/surl books|/amlink01g , \ reprints, and |/surl consulting services|/info01 . Don also offers \ free |/surl catalogs|/syncatg \ of his unique products and electronic bargains. The \ best calling times are |58-5|2 weekdays, MST. Don is the webmaster of his Guru's \ Lair found at |/surl http://www.tinaja.com|/tinaja Full reprints and preprints of all Don's columns and \ ongoing tech support appear here. You can \ reach Don at Synergetics, Box |5809|2, \ Thatcher, |5AZ 85552|2. Or send any messages \ to |2|/surl don@tinaja.com|1|/maildon |x % 58 348 menu8 58 cmb 3 add menu8 showpage /printad false def /fig1 {0 0 1colwide f1h false false /f2name /ad stdfig} def % link /tinton {} def /tinton1 {} def /staytint {} def /stytint1 {} def /surl {} def /maildon {} def /tinaja {} def /squashed false def /showadgrays false def printad { 180 50 translate 1.5 dup scale {0 0 1 fig1} exec showpage 180 -400 translate 1.5 dup scale {0 0 1 fig1} exec showpage } if ( |1WA4KCY link & image site \ |t|/surl |6ourworld.compuserve.com/homepages/sweetbay|1|/wa4kcy |/staytint |Z |2Microcomputer pioneer and guru Don |/staytint Lancaster is the author \ of |535|2 books and countless tech articles. Don maintains his \ no-charge |5US|2 tech helpline found at |5(520) 428-4073|2, \ besides offering all of \ his own \ |/surl books|/amlink01g , \ reprints, and |/surl consulting services|/info01 . Don also offers \ free |/surl catalogs|/syncatg \ of his unique products and electronic bargains. The \ best calling times are |58-5|2 weekdays, MST. Don is the webmaster of his Guru's \ Lair found at |/surl http://www.tinaja.com|/tinaja Full reprints and preprints of all Don's columns and \ ongoing tech support appear here. You can \ reach Don at Synergetics, Box |5809|2, \ Thatcher, |5AZ 85552|2. Or send any messages \ to |2|/surl don@tinaja.com|1|/maildon ) pop