diff --git a/src/dev/CamacDevSup_doc.ps b/src/dev/CamacDevSup_doc.ps deleted file mode 100644 index 1af846600..000000000 --- a/src/dev/CamacDevSup_doc.ps +++ /dev/null @@ -1,2402 +0,0 @@ -%!PS-Adobe-3.0 -%%BoundingBox: (atend) -%%Pages: (atend) -%%PageOrder: (atend) -%%DocumentFonts: (atend) -%%Creator: Frame 4.0 -%%DocumentData: Clean7Bit -%%EndComments -%%BeginProlog -% -% Frame ps_prolog 4.0, for use with Frame 4.0 products -% This ps_prolog file is Copyright (c) 1986-1993 Frame Technology -% Corporation. All rights reserved. This ps_prolog file may be -% freely copied and distributed in conjunction with documents created -% using FrameMaker, FrameBuilder and FrameViewer as long as this -% copyright notice is preserved. -% -% Frame products normally print colors as their true color on a color printer -% or as shades of gray, based on luminance, on a black-and white printer. The -% following flag, if set to True, forces all non-white colors to print as pure -% black. This has no effect on bitmap images. -/FMPrintAllColorsAsBlack false def -% -% Frame products can either set their own line screens or use a printer's -% default settings. Three flags below control this separately for no -% separations, spot separations and process separations. If a flag -% is true, then the default printer settings will not be changed. If it is -% false, Frame products will use their own settings from a table based on -% the printer's resolution. -/FMUseDefaultNoSeparationScreen true def -/FMUseDefaultSpotSeparationScreen true def -/FMUseDefaultProcessSeparationScreen false def -% -% For any given PostScript printer resolution, Frame products have two sets of -% screen angles and frequencies for printing process separations, which are -% recomended by Adobe. The following variable chooses the higher frequencies -% when set to true or the lower frequencies when set to false. This is only -% effective if the appropriate FMUseDefault...SeparationScreen flag is false. -/FMUseHighFrequencyScreens true def -% -% PostScript Level 2 printers contain an "Accurate Screens" feature which can -% improve process separation rendering at the expense of compute time. This -% flag is ignored by PostScript Level 1 printers. -/FMUseAcccurateScreens true def -% -% The following PostScript procedure defines the spot function that Frame -% products will use for process separations. You may un-comment-out one of -% the alternative functions below, or use your own. -% -% Dot function -/FMSpotFunction {abs exch abs 2 copy add 1 gt - {1 sub dup mul exch 1 sub dup mul add 1 sub } - {dup mul exch dup mul add 1 exch sub }ifelse } def -% -% Line function -% /FMSpotFunction { pop } def -% -% Elipse function -% /FMSpotFunction { dup 5 mul 8 div mul exch dup mul exch add -% sqrt 1 exch sub } def -% -% -/FMversion (4.0) def -/FMLevel1 /languagelevel where {pop languagelevel} {1} ifelse 2 lt def -/FMPColor - FMLevel1 { - false - /colorimage where {pop pop true} if - } { - true - } ifelse -def -/FrameDict 400 dict def -systemdict /errordict known not {/errordict 10 dict def - errordict /rangecheck {stop} put} if -% The readline in PS 23.0 doesn't recognize cr's as nl's on AppleTalk -FrameDict /tmprangecheck errordict /rangecheck get put -errordict /rangecheck {FrameDict /bug true put} put -FrameDict /bug false put -mark -% Some PS machines read past the CR, so keep the following 3 lines together! -currentfile 5 string readline -00 -0000000000 -cleartomark -errordict /rangecheck FrameDict /tmprangecheck get put -FrameDict /bug get { - /readline { - /gstring exch def - /gfile exch def - /gindex 0 def - { - gfile read pop - dup 10 eq {exit} if - dup 13 eq {exit} if - gstring exch gindex exch put - /gindex gindex 1 add def - } loop - pop - gstring 0 gindex getinterval true - } bind def - } if -/FMshowpage /showpage load def -/FMquit /quit load def -/FMFAILURE { - dup = flush - FMshowpage - /Helvetica findfont 12 scalefont setfont - 72 200 moveto - show FMshowpage - FMquit - } def -/FMVERSION { - FMversion ne { - (Frame product version does not match ps_prolog!) FMFAILURE - } if - } def -/FMBADEPSF { - (PostScript Lang. Ref. Man., 2nd Ed., H.2.4 says EPS must not call X ) - dup dup (X) search pop exch pop exch pop length - 4 -1 roll - putinterval - FMFAILURE - } def -/FMLOCAL { - FrameDict begin - 0 def - end - } def -/concatprocs - { - /proc2 exch cvlit def/proc1 exch cvlit def/newproc proc1 length proc2 length add array def - newproc 0 proc1 putinterval newproc proc1 length proc2 putinterval newproc cvx -}def -FrameDict begin -/FMnone 0 def -/FMcyan 1 def -/FMmagenta 2 def -/FMyellow 3 def -/FMblack 4 def -/FMcustom 5 def -/FrameNegative false def -/FrameSepIs FMnone def -/FrameSepBlack 0 def -/FrameSepYellow 0 def -/FrameSepMagenta 0 def -/FrameSepCyan 0 def -/FrameSepRed 1 def -/FrameSepGreen 1 def -/FrameSepBlue 1 def -/FrameCurGray 1 def -/FrameCurPat null def -/FrameCurColors [ 0 0 0 1 0 0 0 ] def -/FrameColorEpsilon .001 def -/eqepsilon { - sub dup 0 lt {neg} if - FrameColorEpsilon le -} bind def -/FrameCmpColorsCMYK { - 2 copy 0 get exch 0 get eqepsilon { - 2 copy 1 get exch 1 get eqepsilon { - 2 copy 2 get exch 2 get eqepsilon { - 3 get exch 3 get eqepsilon - } {pop pop false} ifelse - }{pop pop false} ifelse - } {pop pop false} ifelse -} bind def -/FrameCmpColorsRGB { - 2 copy 4 get exch 0 get eqepsilon { - 2 copy 5 get exch 1 get eqepsilon { - 6 get exch 2 get eqepsilon - }{pop pop false} ifelse - } {pop pop false} ifelse -} bind def -/RGBtoCMYK { - 1 exch sub - 3 1 roll - 1 exch sub - 3 1 roll - 1 exch sub - 3 1 roll - 3 copy - 2 copy - le { pop } { exch pop } ifelse - 2 copy - le { pop } { exch pop } ifelse - dup dup dup - 6 1 roll - 4 1 roll - 7 1 roll - sub - 6 1 roll - sub - 5 1 roll - sub - 4 1 roll -} bind def -/CMYKtoRGB { - dup dup 4 -1 roll add - 5 1 roll 3 -1 roll add - 4 1 roll add - 1 exch sub dup 0 lt {pop 0} if 3 1 roll - 1 exch sub dup 0 lt {pop 0} if exch - 1 exch sub dup 0 lt {pop 0} if exch -} bind def -/FrameSepInit { - 1.0 RealSetgray -} bind def -/FrameSetSepColor { - /FrameSepBlue exch def - /FrameSepGreen exch def - /FrameSepRed exch def - /FrameSepBlack exch def - /FrameSepYellow exch def - /FrameSepMagenta exch def - /FrameSepCyan exch def - /FrameSepIs FMcustom def - setCurrentScreen -} bind def -/FrameSetCyan { - /FrameSepBlue 1.0 def - /FrameSepGreen 1.0 def - /FrameSepRed 0.0 def - /FrameSepBlack 0.0 def - /FrameSepYellow 0.0 def - /FrameSepMagenta 0.0 def - /FrameSepCyan 1.0 def - /FrameSepIs FMcyan def - setCurrentScreen -} bind def - -/FrameSetMagenta { - /FrameSepBlue 1.0 def - /FrameSepGreen 0.0 def - /FrameSepRed 1.0 def - /FrameSepBlack 0.0 def - /FrameSepYellow 0.0 def - /FrameSepMagenta 1.0 def - /FrameSepCyan 0.0 def - /FrameSepIs FMmagenta def - setCurrentScreen -} bind def - -/FrameSetYellow { - /FrameSepBlue 0.0 def - /FrameSepGreen 1.0 def - /FrameSepRed 1.0 def - /FrameSepBlack 0.0 def - /FrameSepYellow 1.0 def - /FrameSepMagenta 0.0 def - /FrameSepCyan 0.0 def - /FrameSepIs FMyellow def - setCurrentScreen -} bind def - -/FrameSetBlack { - /FrameSepBlue 0.0 def - /FrameSepGreen 0.0 def - /FrameSepRed 0.0 def - /FrameSepBlack 1.0 def - /FrameSepYellow 0.0 def - /FrameSepMagenta 0.0 def - /FrameSepCyan 0.0 def - /FrameSepIs FMblack def - setCurrentScreen -} bind def - -/FrameNoSep { - /FrameSepIs FMnone def - setCurrentScreen -} bind def -/FrameSetSepColors { - FrameDict begin - [ exch 1 add 1 roll ] - /FrameSepColors - exch def end - } bind def -/FrameColorInSepListCMYK { - FrameSepColors { - exch dup 3 -1 roll - FrameCmpColorsCMYK - { pop true exit } if - } forall - dup true ne {pop false} if - } bind def -/FrameColorInSepListRGB { - FrameSepColors { - exch dup 3 -1 roll - FrameCmpColorsRGB - { pop true exit } if - } forall - dup true ne {pop false} if - } bind def -/RealSetgray /setgray load def -/RealSetrgbcolor /setrgbcolor load def -/RealSethsbcolor /sethsbcolor load def -end -/setgray { - FrameDict begin - FrameSepIs FMnone eq - { RealSetgray } - { - FrameSepIs FMblack eq - { RealSetgray } - { FrameSepIs FMcustom eq - FrameSepRed 0 eq and - FrameSepGreen 0 eq and - FrameSepBlue 0 eq and { - RealSetgray - } { - 1 RealSetgray pop - } ifelse - } ifelse - } ifelse - end -} bind def -/setrgbcolor { - FrameDict begin - FrameSepIs FMnone eq - { RealSetrgbcolor } - { - 3 copy [ 4 1 roll ] - FrameColorInSepListRGB - { - FrameSepBlue eq exch - FrameSepGreen eq and exch - FrameSepRed eq and - { 0 } { 1 } ifelse - } - { - FMPColor { - RealSetrgbcolor - currentcmykcolor - } { - RGBtoCMYK - } ifelse - FrameSepIs FMblack eq - {1.0 exch sub 4 1 roll pop pop pop} { - FrameSepIs FMyellow eq - {pop 1.0 exch sub 3 1 roll pop pop} { - FrameSepIs FMmagenta eq - {pop pop 1.0 exch sub exch pop } { - FrameSepIs FMcyan eq - {pop pop pop 1.0 exch sub } - {pop pop pop pop 1} ifelse } ifelse } ifelse } ifelse - } ifelse - RealSetgray - } - ifelse - end -} bind def -/sethsbcolor { - FrameDict begin - FrameSepIs FMnone eq - { RealSethsbcolor } - { - RealSethsbcolor - currentrgbcolor - setrgbcolor - } - ifelse - end -} bind def -FrameDict begin -/setcmykcolor where { - pop /RealSetcmykcolor /setcmykcolor load def -} { - /RealSetcmykcolor { - 4 1 roll - 3 { 3 index add 0 max 1 min 1 exch sub 3 1 roll} repeat - setrgbcolor pop - } bind def -} ifelse -userdict /setcmykcolor { - FrameDict begin - FrameSepIs FMnone eq - { RealSetcmykcolor } - { - 4 copy [ 5 1 roll ] - FrameColorInSepListCMYK - { - FrameSepBlack eq exch - FrameSepYellow eq and exch - FrameSepMagenta eq and exch - FrameSepCyan eq and - { 0 } { 1 } ifelse - } - { - FrameSepIs FMblack eq - {1.0 exch sub 4 1 roll pop pop pop} { - FrameSepIs FMyellow eq - {pop 1.0 exch sub 3 1 roll pop pop} { - FrameSepIs FMmagenta eq - {pop pop 1.0 exch sub exch pop } { - FrameSepIs FMcyan eq - {pop pop pop 1.0 exch sub } - {pop pop pop pop 1} ifelse } ifelse } ifelse } ifelse - } ifelse - RealSetgray - } - ifelse - end - } bind put -FMLevel1 not { - - /patProcDict 5 dict dup begin - <0f1e3c78f0e1c387> { 3 setlinewidth -1 -1 moveto 9 9 lineto stroke - 4 -4 moveto 12 4 lineto stroke - -4 4 moveto 4 12 lineto stroke} bind def - <0f87c3e1f0783c1e> { 3 setlinewidth -1 9 moveto 9 -1 lineto stroke - -4 4 moveto 4 -4 lineto stroke - 4 12 moveto 12 4 lineto stroke} bind def - <8142241818244281> { 1 setlinewidth -1 9 moveto 9 -1 lineto stroke - -1 -1 moveto 9 9 lineto stroke } bind def - <03060c183060c081> { 1 setlinewidth -1 -1 moveto 9 9 lineto stroke - 4 -4 moveto 12 4 lineto stroke - -4 4 moveto 4 12 lineto stroke} bind def - <8040201008040201> { 1 setlinewidth -1 9 moveto 9 -1 lineto stroke - -4 4 moveto 4 -4 lineto stroke - 4 12 moveto 12 4 lineto stroke} bind def - end def - /patDict 15 dict dup begin - /PatternType 1 def - /PaintType 2 def - /TilingType 3 def - /BBox [ 0 0 8 8 ] def - /XStep 8 def - /YStep 8 def - /PaintProc { - begin - patProcDict bstring known { - patProcDict bstring get exec - } { - 8 8 true [1 0 0 -1 0 8] bstring imagemask - } ifelse - end - } bind def - end def -} if -/combineColor { - FrameSepIs FMnone eq - { - graymode FMLevel1 or not { - - [/Pattern [/DeviceCMYK]] setcolorspace - FrameCurColors 0 4 getinterval aload pop FrameCurPat setcolor - } { - FrameCurColors 3 get 1.0 ge { - FrameCurGray RealSetgray - } { - FMPColor graymode and { - 0 1 3 { - FrameCurColors exch get - 1 FrameCurGray sub mul - } for - RealSetcmykcolor - } { - 4 1 6 { - FrameCurColors exch get - graymode { - 1 exch sub 1 FrameCurGray sub mul 1 exch sub - } { - 1.0 lt {FrameCurGray} {1} ifelse - } ifelse - } for - RealSetrgbcolor - } ifelse - } ifelse - } ifelse - } { - FrameCurColors 0 4 getinterval aload - FrameColorInSepListCMYK { - FrameSepBlack eq exch - FrameSepYellow eq and exch - FrameSepMagenta eq and exch - FrameSepCyan eq and - FrameSepIs FMcustom eq and - { FrameCurGray } { 1 } ifelse - } { - FrameSepIs FMblack eq - {FrameCurGray 1.0 exch sub mul 1.0 exch sub 4 1 roll pop pop pop} { - FrameSepIs FMyellow eq - {pop FrameCurGray 1.0 exch sub mul 1.0 exch sub 3 1 roll pop pop} { - FrameSepIs FMmagenta eq - {pop pop FrameCurGray 1.0 exch sub mul 1.0 exch sub exch pop } { - FrameSepIs FMcyan eq - {pop pop pop FrameCurGray 1.0 exch sub mul 1.0 exch sub } - {pop pop pop pop 1} ifelse } ifelse } ifelse } ifelse - } ifelse - graymode FMLevel1 or not { - - [/Pattern [/DeviceGray]] setcolorspace - FrameCurPat setcolor - } { - graymode not FMLevel1 and { - - dup 1 lt {pop FrameCurGray} if - } if - RealSetgray - } ifelse - } ifelse -} bind def -/savematrix { - orgmatrix currentmatrix pop - } bind def -/restorematrix { - orgmatrix setmatrix - } bind def -/dmatrix matrix def -/dpi 72 0 dmatrix defaultmatrix dtransform - dup mul exch dup mul add sqrt def - -/freq dpi dup 72 div round dup 0 eq {pop 1} if 8 mul div def -/sangle 1 0 dmatrix defaultmatrix dtransform exch atan def -/dpiranges [ 2540 2400 1693 1270 1200 635 600 0 ] def -/CMLowFreqs [ 100.402 94.8683 89.2289 100.402 94.8683 66.9349 63.2456 47.4342 ] def -/YLowFreqs [ 95.25 90.0 84.65 95.25 90.0 70.5556 66.6667 50.0 ] def -/KLowFreqs [ 89.8026 84.8528 79.8088 89.8026 84.8528 74.8355 70.7107 53.033 ] def -/CLowAngles [ 71.5651 71.5651 71.5651 71.5651 71.5651 71.5651 71.5651 71.5651 ] def -/MLowAngles [ 18.4349 18.4349 18.4349 18.4349 18.4349 18.4349 18.4349 18.4349 ] def -/YLowTDot [ true true false true true false false false ] def -/CMHighFreqs [ 133.87 126.491 133.843 108.503 102.523 100.402 94.8683 63.2456 ] def -/YHighFreqs [ 127.0 120.0 126.975 115.455 109.091 95.25 90.0 60.0 ] def -/KHighFreqs [ 119.737 113.137 119.713 128.289 121.218 89.8026 84.8528 63.6395 ] def -/CHighAngles [ 71.5651 71.5651 71.5651 70.0169 70.0169 71.5651 71.5651 71.5651 ] def -/MHighAngles [ 18.4349 18.4349 18.4349 19.9831 19.9831 18.4349 18.4349 18.4349 ] def -/YHighTDot [ false false true false false true true false ] def -/PatFreq [ 10.5833 10.0 9.4055 10.5833 10.0 10.5833 10.0 9.375 ] def -/screenIndex { - 0 1 dpiranges length 1 sub { dup dpiranges exch get 1 sub dpi le {exit} {pop} ifelse } for -} bind def -/getCyanScreen { - FMUseHighFrequencyScreens { CHighAngles CMHighFreqs} {CLowAngles CMLowFreqs} ifelse - screenIndex dup 3 1 roll get 3 1 roll get /FMSpotFunction load -} bind def -/getMagentaScreen { - FMUseHighFrequencyScreens { MHighAngles CMHighFreqs } {MLowAngles CMLowFreqs} ifelse - screenIndex dup 3 1 roll get 3 1 roll get /FMSpotFunction load -} bind def -/getYellowScreen { - FMUseHighFrequencyScreens { YHighTDot YHighFreqs} { YLowTDot YLowFreqs } ifelse - screenIndex dup 3 1 roll get 3 1 roll get { 3 div - {2 { 1 add 2 div 3 mul dup floor sub 2 mul 1 sub exch} repeat - FMSpotFunction } } {/FMSpotFunction load } ifelse - 0.0 exch -} bind def -/getBlackScreen { - FMUseHighFrequencyScreens { KHighFreqs } { KLowFreqs } ifelse - screenIndex get 45.0 /FMSpotFunction load -} bind def -/getSpotScreen { - getBlackScreen -} bind def -/getCompositeScreen { - getBlackScreen -} bind def -/FMSetScreen - FMLevel1 { /setscreen load - }{ { - 8 dict begin - /HalftoneType 1 def - /SpotFunction exch def - /Angle exch def - /Frequency exch def - /AccurateScreens FMUseAcccurateScreens def - currentdict end sethalftone - } bind } ifelse -def -/setDefaultScreen { - FMPColor { - orgrxfer cvx orggxfer cvx orgbxfer cvx orgxfer cvx setcolortransfer - } - { - orgxfer cvx settransfer - } ifelse - orgfreq organgle orgproc cvx setscreen -} bind def -/setCurrentScreen { - FrameSepIs FMnone eq { - FMUseDefaultNoSeparationScreen { - setDefaultScreen - } { - getCompositeScreen FMSetScreen - } ifelse - } { - FrameSepIs FMcustom eq { - FMUseDefaultSpotSeparationScreen { - setDefaultScreen - } { - getSpotScreen FMSetScreen - } ifelse - } { - FMUseDefaultProcessSeparationScreen { - setDefaultScreen - } { - FrameSepIs FMcyan eq { - getCyanScreen FMSetScreen - } { - FrameSepIs FMmagenta eq { - getMagentaScreen FMSetScreen - } { - FrameSepIs FMyellow eq { - getYellowScreen FMSetScreen - } { - getBlackScreen FMSetScreen - } ifelse - } ifelse - } ifelse - } ifelse - } ifelse - } ifelse -} bind def -end - /gstring FMLOCAL - /gfile FMLOCAL - /gindex FMLOCAL - /orgrxfer FMLOCAL - /orggxfer FMLOCAL - /orgbxfer FMLOCAL - /orgxfer FMLOCAL - /orgproc FMLOCAL - /orgrproc FMLOCAL - /orggproc FMLOCAL - /orgbproc FMLOCAL - /organgle FMLOCAL - /orgrangle FMLOCAL - /orggangle FMLOCAL - /orgbangle FMLOCAL - /orgfreq FMLOCAL - /orgrfreq FMLOCAL - /orggfreq FMLOCAL - /orgbfreq FMLOCAL - /yscale FMLOCAL - /xscale FMLOCAL - /edown FMLOCAL - /manualfeed FMLOCAL - /paperheight FMLOCAL - /paperwidth FMLOCAL -/FMDOCUMENT { - array /FMfonts exch def - /#copies exch def - FrameDict begin - 0 ne /manualfeed exch def - /paperheight exch def - /paperwidth exch def - 0 ne /FrameNegative exch def - 0 ne /edown exch def - /yscale exch def - /xscale exch def - FMLevel1 { - manualfeed {setmanualfeed} if - /FMdicttop countdictstack 1 add def - /FMoptop count def - setpapername - manualfeed {true} {papersize} ifelse - {manualpapersize} {false} ifelse - {desperatepapersize} {false} ifelse - { (Can't select requested paper size for Frame print job!) FMFAILURE } if - count -1 FMoptop {pop pop} for - countdictstack -1 FMdicttop {pop end} for - } - {{1 dict dup /PageSize [paperwidth paperheight]put setpagedevice}stopped - { (Can't select requested paper size for Frame print job!) FMFAILURE } if - {1 dict dup /ManualFeed manualfeed put setpagedevice } stopped pop } - ifelse - - FMPColor { - currentcolorscreen - cvlit /orgproc exch def - /organgle exch def - /orgfreq exch def - cvlit /orgbproc exch def - /orgbangle exch def - /orgbfreq exch def - cvlit /orggproc exch def - /orggangle exch def - /orggfreq exch def - cvlit /orgrproc exch def - /orgrangle exch def - /orgrfreq exch def - currentcolortransfer - FrameNegative { - 1 1 4 { - pop { 1 exch sub } concatprocs 4 1 roll - } for - 4 copy - setcolortransfer - } if - cvlit /orgxfer exch def - cvlit /orgbxfer exch def - cvlit /orggxfer exch def - cvlit /orgrxfer exch def - } { - currentscreen - cvlit /orgproc exch def - /organgle exch def - /orgfreq exch def - - currenttransfer - FrameNegative { - { 1 exch sub } concatprocs - dup settransfer - } if - cvlit /orgxfer exch def - } ifelse - end -} def -/pagesave FMLOCAL -/orgmatrix FMLOCAL -/landscape FMLOCAL -/pwid FMLOCAL -/FMBEGINPAGE { - FrameDict begin - /pagesave save def - 3.86 setmiterlimit - /landscape exch 0 ne def - landscape { - 90 rotate 0 exch dup /pwid exch def neg translate pop - }{ - pop /pwid exch def - } ifelse - edown { [-1 0 0 1 pwid 0] concat } if - 0 0 moveto paperwidth 0 lineto paperwidth paperheight lineto - 0 paperheight lineto 0 0 lineto 1 setgray fill - xscale yscale scale - /orgmatrix matrix def - gsave -} def -/FMENDPAGE { - grestore - pagesave restore - end - showpage - } def -/FMFONTDEFINE { - FrameDict begin - findfont - ReEncode - 1 index exch - definefont - FMfonts 3 1 roll - put - end - } def -/FMFILLS { - FrameDict begin dup - array /fillvals exch def - dict /patCache exch def - end - } def -/FMFILL { - FrameDict begin - fillvals 3 1 roll put - end - } def -/FMNORMALIZEGRAPHICS { - newpath - 0.0 0.0 moveto - 1 setlinewidth - 0 setlinecap - 0 0 0 sethsbcolor - 0 setgray - } bind def - /fx FMLOCAL - /fy FMLOCAL - /fh FMLOCAL - /fw FMLOCAL - /llx FMLOCAL - /lly FMLOCAL - /urx FMLOCAL - /ury FMLOCAL -/FMBEGINEPSF { - end - /FMEPSF save def - /showpage {} def -% See Adobe's "PostScript Language Reference Manual, 2nd Edition", page 714. -% "...the following operators MUST NOT be used in an EPS file:" (emphasis ours) - /banddevice {(banddevice) FMBADEPSF} def - /clear {(clear) FMBADEPSF} def - /cleardictstack {(cleardictstack) FMBADEPSF} def - /copypage {(copypage) FMBADEPSF} def - /erasepage {(erasepage) FMBADEPSF} def - /exitserver {(exitserver) FMBADEPSF} def - /framedevice {(framedevice) FMBADEPSF} def - /grestoreall {(grestoreall) FMBADEPSF} def - /initclip {(initclip) FMBADEPSF} def - /initgraphics {(initgraphics) FMBADEPSF} def - /initmatrix {(initmatrix) FMBADEPSF} def - /quit {(quit) FMBADEPSF} def - /renderbands {(renderbands) FMBADEPSF} def - /setglobal {(setglobal) FMBADEPSF} def - /setpagedevice {(setpagedevice) FMBADEPSF} def - /setshared {(setshared) FMBADEPSF} def - /startjob {(startjob) FMBADEPSF} def - /lettertray {(lettertray) FMBADEPSF} def - /letter {(letter) FMBADEPSF} def - /lettersmall {(lettersmall) FMBADEPSF} def - /11x17tray {(11x17tray) FMBADEPSF} def - /11x17 {(11x17) FMBADEPSF} def - /ledgertray {(ledgertray) FMBADEPSF} def - /ledger {(ledger) FMBADEPSF} def - /legaltray {(legaltray) FMBADEPSF} def - /legal {(legal) FMBADEPSF} def - /statementtray {(statementtray) FMBADEPSF} def - /statement {(statement) FMBADEPSF} def - /executivetray {(executivetray) FMBADEPSF} def - /executive {(executive) FMBADEPSF} def - /a3tray {(a3tray) FMBADEPSF} def - /a3 {(a3) FMBADEPSF} def - /a4tray {(a4tray) FMBADEPSF} def - /a4 {(a4) FMBADEPSF} def - /a4small {(a4small) FMBADEPSF} def - /b4tray {(b4tray) FMBADEPSF} def - /b4 {(b4) FMBADEPSF} def - /b5tray {(b5tray) FMBADEPSF} def - /b5 {(b5) FMBADEPSF} def - FMNORMALIZEGRAPHICS - [/fy /fx /fh /fw /ury /urx /lly /llx] {exch def} forall - fx fw 2 div add fy fh 2 div add translate - rotate - fw 2 div neg fh 2 div neg translate - fw urx llx sub div fh ury lly sub div scale - llx neg lly neg translate - /FMdicttop countdictstack 1 add def - /FMoptop count def - } bind def -/FMENDEPSF { - count -1 FMoptop {pop pop} for - countdictstack -1 FMdicttop {pop end} for - FMEPSF restore - FrameDict begin - } bind def -FrameDict begin -/setmanualfeed { -%%BeginFeature *ManualFeed True - statusdict /manualfeed true put -%%EndFeature - } bind def -/max {2 copy lt {exch} if pop} bind def -/min {2 copy gt {exch} if pop} bind def -/inch {72 mul} def -/pagedimen { - paperheight sub abs 16 lt exch - paperwidth sub abs 16 lt and - {/papername exch def} {pop} ifelse - } bind def - /papersizedict FMLOCAL -/setpapername { - /papersizedict 14 dict def - papersizedict begin - /papername /unknown def - /Letter 8.5 inch 11.0 inch pagedimen - /LetterSmall 7.68 inch 10.16 inch pagedimen - /Tabloid 11.0 inch 17.0 inch pagedimen - /Ledger 17.0 inch 11.0 inch pagedimen - /Legal 8.5 inch 14.0 inch pagedimen - /Statement 5.5 inch 8.5 inch pagedimen - /Executive 7.5 inch 10.0 inch pagedimen - /A3 11.69 inch 16.5 inch pagedimen - /A4 8.26 inch 11.69 inch pagedimen - /A4Small 7.47 inch 10.85 inch pagedimen - /B4 10.125 inch 14.33 inch pagedimen - /B5 7.16 inch 10.125 inch pagedimen - end - } bind def -/papersize { - papersizedict begin - /Letter {lettertray letter} def - /LetterSmall {lettertray lettersmall} def - /Tabloid {11x17tray 11x17} def - /Ledger {ledgertray ledger} def - /Legal {legaltray legal} def - /Statement {statementtray statement} def - /Executive {executivetray executive} def - /A3 {a3tray a3} def - /A4 {a4tray a4} def - /A4Small {a4tray a4small} def - /B4 {b4tray b4} def - /B5 {b5tray b5} def - /unknown {unknown} def - papersizedict dup papername known {papername} {/unknown} ifelse get - end - statusdict begin stopped end - } bind def -/manualpapersize { - papersizedict begin - /Letter {letter} def - /LetterSmall {lettersmall} def - /Tabloid {11x17} def - /Ledger {ledger} def - /Legal {legal} def - /Statement {statement} def - /Executive {executive} def - /A3 {a3} def - /A4 {a4} def - /A4Small {a4small} def - /B4 {b4} def - /B5 {b5} def - /unknown {unknown} def - papersizedict dup papername known {papername} {/unknown} ifelse get - end - stopped - } bind def -/desperatepapersize { - statusdict /setpageparams known - { - paperwidth paperheight 0 1 - statusdict begin - {setpageparams} stopped - end - } {true} ifelse - } bind def -/DiacriticEncoding [ -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl -/numbersign /dollar /percent /ampersand /quotesingle /parenleft -/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one -/two /three /four /five /six /seven /eight /nine /colon /semicolon -/less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K -/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash -/bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h -/i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar -/braceright /asciitilde /.notdef /Adieresis /Aring /Ccedilla /Eacute -/Ntilde /Odieresis /Udieresis /aacute /agrave /acircumflex /adieresis -/atilde /aring /ccedilla /eacute /egrave /ecircumflex /edieresis -/iacute /igrave /icircumflex /idieresis /ntilde /oacute /ograve -/ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex -/udieresis /dagger /.notdef /cent /sterling /section /bullet -/paragraph /germandbls /registered /copyright /trademark /acute -/dieresis /.notdef /AE /Oslash /.notdef /.notdef /.notdef /.notdef -/yen /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/ordfeminine /ordmasculine /.notdef /ae /oslash /questiondown -/exclamdown /logicalnot /.notdef /florin /.notdef /.notdef -/guillemotleft /guillemotright /ellipsis /.notdef /Agrave /Atilde -/Otilde /OE /oe /endash /emdash /quotedblleft /quotedblright -/quoteleft /quoteright /.notdef /.notdef /ydieresis /Ydieresis -/fraction /currency /guilsinglleft /guilsinglright /fi /fl /daggerdbl -/periodcentered /quotesinglbase /quotedblbase /perthousand -/Acircumflex /Ecircumflex /Aacute /Edieresis /Egrave /Iacute -/Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex /.notdef /Ograve -/Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde /macron -/breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron -] def -/ReEncode { - dup - length - dict begin - { - 1 index /FID ne - {def} - {pop pop} ifelse - } forall - 0 eq {/Encoding DiacriticEncoding def} if - currentdict - end - } bind def -FMPColor - - { - /BEGINBITMAPCOLOR { - BITMAPCOLOR} def - /BEGINBITMAPCOLORc { - BITMAPCOLORc} def - /BEGINBITMAPTRUECOLOR { - BITMAPTRUECOLOR } def - /BEGINBITMAPTRUECOLORc { - BITMAPTRUECOLORc } def - } - - { - /BEGINBITMAPCOLOR { - BITMAPGRAY} def - /BEGINBITMAPCOLORc { - BITMAPGRAYc} def - /BEGINBITMAPTRUECOLOR { - BITMAPTRUEGRAY } def - /BEGINBITMAPTRUECOLORc { - BITMAPTRUEGRAYc } def - } -ifelse -/K { - FMPrintAllColorsAsBlack { - dup 1 eq 2 index 1 eq and 3 index 1 eq and not - {7 {pop} repeat 0 0 0 1 0 0 0} if - } if - FrameCurColors astore - pop combineColor -} bind def -/graymode true def - /bwidth FMLOCAL - /bpside FMLOCAL - /bstring FMLOCAL - /onbits FMLOCAL - /offbits FMLOCAL - /xindex FMLOCAL - /yindex FMLOCAL - /x FMLOCAL - /y FMLOCAL -/setPatternMode { - FMLevel1 { - /bwidth exch def - /bpside exch def - /bstring exch def - /onbits 0 def /offbits 0 def - freq sangle landscape {90 add} if - {/y exch def - /x exch def - /xindex x 1 add 2 div bpside mul cvi def - /yindex y 1 add 2 div bpside mul cvi def - bstring yindex bwidth mul xindex 8 idiv add get - 1 7 xindex 8 mod sub bitshift and 0 ne FrameNegative {not} if - {/onbits onbits 1 add def 1} - {/offbits offbits 1 add def 0} - ifelse - } - setscreen - offbits offbits onbits add div FrameNegative {1.0 exch sub} if - /FrameCurGray exch def - } { - pop pop - dup patCache exch known { - patCache exch get - } { - dup - patDict /bstring 3 -1 roll put - patDict - 9 PatFreq screenIndex get div dup matrix scale - makepattern - dup - patCache 4 -1 roll 3 -1 roll put - } ifelse - /FrameCurGray 0 def - /FrameCurPat exch def - } ifelse - /graymode false def - combineColor -} bind def -/setGrayScaleMode { - graymode not { - /graymode true def - FMLevel1 { - setCurrentScreen - } if - } if - /FrameCurGray exch def - combineColor -} bind def -/normalize { - transform round exch round exch itransform - } bind def -/dnormalize { - dtransform round exch round exch idtransform - } bind def -/lnormalize { - 0 dtransform exch cvi 2 idiv 2 mul 1 add exch idtransform pop - } bind def -/H { - lnormalize setlinewidth - } bind def -/Z { - setlinecap - } bind def - -/PFill { - graymode FMLevel1 or not { - gsave 1 setgray eofill grestore - } if -} bind def -/PStroke { - graymode FMLevel1 or not { - gsave 1 setgray stroke grestore - } if - stroke -} bind def - /fillvals FMLOCAL -/X { - fillvals exch get - dup type /stringtype eq - {8 1 setPatternMode} - {setGrayScaleMode} - ifelse - } bind def -/V { - PFill gsave eofill grestore - } bind def -/Vclip { - clip - } bind def -/Vstrk { - currentlinewidth exch setlinewidth PStroke setlinewidth - } bind def -/N { - PStroke - } bind def -/Nclip { - strokepath clip newpath - } bind def -/Nstrk { - currentlinewidth exch setlinewidth PStroke setlinewidth - } bind def -/M {newpath moveto} bind def -/E {lineto} bind def -/D {curveto} bind def -/O {closepath} bind def - /n FMLOCAL -/L { - /n exch def - newpath - normalize - moveto - 2 1 n {pop normalize lineto} for - } bind def -/Y { - L - closepath - } bind def - /x1 FMLOCAL - /x2 FMLOCAL - /y1 FMLOCAL - /y2 FMLOCAL -/R { - /y2 exch def - /x2 exch def - /y1 exch def - /x1 exch def - x1 y1 - x2 y1 - x2 y2 - x1 y2 - 4 Y - } bind def - /rad FMLOCAL -/rarc - {rad - arcto - } bind def -/RR { - /rad exch def - normalize - /y2 exch def - /x2 exch def - normalize - /y1 exch def - /x1 exch def - mark - newpath - { - x1 y1 rad add moveto - x1 y2 x2 y2 rarc - x2 y2 x2 y1 rarc - x2 y1 x1 y1 rarc - x1 y1 x1 y2 rarc - closepath - } stopped {x1 y1 x2 y2 R} if - cleartomark - } bind def -/RRR { - /rad exch def - normalize /y4 exch def /x4 exch def - normalize /y3 exch def /x3 exch def - normalize /y2 exch def /x2 exch def - normalize /y1 exch def /x1 exch def - newpath - normalize moveto - mark - { - x2 y2 x3 y3 rarc - x3 y3 x4 y4 rarc - x4 y4 x1 y1 rarc - x1 y1 x2 y2 rarc - closepath - } stopped - {x1 y1 x2 y2 x3 y3 x4 y4 newpath moveto lineto lineto lineto closepath} if - cleartomark - } bind def -/C { - grestore - gsave - R - clip - setCurrentScreen -} bind def -/CP { - grestore - gsave - Y - clip - setCurrentScreen -} bind def - /FMpointsize FMLOCAL -/F { - FMfonts exch get - FMpointsize scalefont - setfont - } bind def -/Q { - /FMpointsize exch def - F - } bind def -/T { - moveto show - } bind def -/RF { - rotate - 0 ne {-1 1 scale} if - } bind def -/TF { - gsave - moveto - RF - show - grestore - } bind def -/P { - moveto - 0 32 3 2 roll widthshow - } bind def -/PF { - gsave - moveto - RF - 0 32 3 2 roll widthshow - grestore - } bind def -/S { - moveto - 0 exch ashow - } bind def -/SF { - gsave - moveto - RF - 0 exch ashow - grestore - } bind def -/B { - moveto - 0 32 4 2 roll 0 exch awidthshow - } bind def -/BF { - gsave - moveto - RF - 0 32 4 2 roll 0 exch awidthshow - grestore - } bind def -/G { - gsave - newpath - normalize translate 0.0 0.0 moveto - dnormalize scale - 0.0 0.0 1.0 5 3 roll arc - closepath - PFill fill - grestore - } bind def -/Gstrk { - savematrix - newpath - 2 index 2 div add exch 3 index 2 div sub exch - normalize 2 index 2 div sub exch 3 index 2 div add exch - translate - scale - 0.0 0.0 1.0 5 3 roll arc - restorematrix - currentlinewidth exch setlinewidth PStroke setlinewidth - } bind def -/Gclip { - newpath - savematrix - normalize translate 0.0 0.0 moveto - dnormalize scale - 0.0 0.0 1.0 5 3 roll arc - closepath - clip newpath - restorematrix - } bind def -/GG { - gsave - newpath - normalize translate 0.0 0.0 moveto - rotate - dnormalize scale - 0.0 0.0 1.0 5 3 roll arc - closepath - PFill - fill - grestore - } bind def -/GGclip { - savematrix - newpath - normalize translate 0.0 0.0 moveto - rotate - dnormalize scale - 0.0 0.0 1.0 5 3 roll arc - closepath - clip newpath - restorematrix - } bind def -/GGstrk { - savematrix - newpath - normalize translate 0.0 0.0 moveto - rotate - dnormalize scale - 0.0 0.0 1.0 5 3 roll arc - closepath - restorematrix - currentlinewidth exch setlinewidth PStroke setlinewidth - } bind def -/A { - gsave - savematrix - newpath - 2 index 2 div add exch 3 index 2 div sub exch - normalize 2 index 2 div sub exch 3 index 2 div add exch - translate - scale - 0.0 0.0 1.0 5 3 roll arc - restorematrix - PStroke - grestore - } bind def -/Aclip { - newpath - savematrix - normalize translate 0.0 0.0 moveto - dnormalize scale - 0.0 0.0 1.0 5 3 roll arc - closepath - strokepath clip newpath - restorematrix -} bind def -/Astrk { - Gstrk -} bind def -/AA { - gsave - savematrix - newpath - - 3 index 2 div add exch 4 index 2 div sub exch - - normalize 3 index 2 div sub exch 4 index 2 div add exch - translate - rotate - scale - 0.0 0.0 1.0 5 3 roll arc - restorematrix - PStroke - grestore - } bind def -/AAclip { - savematrix - newpath - normalize translate 0.0 0.0 moveto - rotate - dnormalize scale - 0.0 0.0 1.0 5 3 roll arc - closepath - strokepath clip newpath - restorematrix -} bind def -/AAstrk { - GGstrk -} bind def - /x FMLOCAL - /y FMLOCAL - /w FMLOCAL - /h FMLOCAL - /xx FMLOCAL - /yy FMLOCAL - /ww FMLOCAL - /hh FMLOCAL - /FMsaveobject FMLOCAL - /FMoptop FMLOCAL - /FMdicttop FMLOCAL -/BEGINPRINTCODE { - /FMdicttop countdictstack 1 add def - /FMoptop count 7 sub def - /FMsaveobject save def - userdict begin - /showpage {} def - FMNORMALIZEGRAPHICS - 3 index neg 3 index neg translate - } bind def -/ENDPRINTCODE { - count -1 FMoptop {pop pop} for - countdictstack -1 FMdicttop {pop end} for - FMsaveobject restore - } bind def -/gn { - 0 - { 46 mul - cf read pop - 32 sub - dup 46 lt {exit} if - 46 sub add - } loop - add - } bind def - /str FMLOCAL -/cfs { - /str sl string def - 0 1 sl 1 sub {str exch val put} for - str def - } bind def -/ic [ - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223 - 0 - {0 hx} {1 hx} {2 hx} {3 hx} {4 hx} {5 hx} {6 hx} {7 hx} {8 hx} {9 hx} - {10 hx} {11 hx} {12 hx} {13 hx} {14 hx} {15 hx} {16 hx} {17 hx} {18 hx} - {19 hx} {gn hx} {0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11} {12} - {13} {14} {15} {16} {17} {18} {19} {gn} {0 wh} {1 wh} {2 wh} {3 wh} - {4 wh} {5 wh} {6 wh} {7 wh} {8 wh} {9 wh} {10 wh} {11 wh} {12 wh} - {13 wh} {14 wh} {gn wh} {0 bl} {1 bl} {2 bl} {3 bl} {4 bl} {5 bl} {6 bl} - {7 bl} {8 bl} {9 bl} {10 bl} {11 bl} {12 bl} {13 bl} {14 bl} {gn bl} - {0 fl} {1 fl} {2 fl} {3 fl} {4 fl} {5 fl} {6 fl} {7 fl} {8 fl} {9 fl} - {10 fl} {11 fl} {12 fl} {13 fl} {14 fl} {gn fl} - ] def - /sl FMLOCAL - /val FMLOCAL - /ws FMLOCAL - /im FMLOCAL - /bs FMLOCAL - /cs FMLOCAL - /len FMLOCAL - /pos FMLOCAL -/ms { - /sl exch def - /val 255 def - /ws cfs - /im cfs - /val 0 def - /bs cfs - /cs cfs - } bind def -400 ms -/ip { - is - 0 - cf cs readline pop - { ic exch get exec - add - } forall - pop - - } bind def -/rip { - - - bis ris copy pop - is - 0 - cf cs readline pop - { ic exch get exec - add - } forall - pop pop - ris gis copy pop - dup is exch - - cf cs readline pop - { ic exch get exec - add - } forall - pop pop - gis bis copy pop - dup add is exch - - cf cs readline pop - { ic exch get exec - add - } forall - pop - - } bind def -/wh { - /len exch def - /pos exch def - ws 0 len getinterval im pos len getinterval copy pop - pos len - } bind def -/bl { - /len exch def - /pos exch def - bs 0 len getinterval im pos len getinterval copy pop - pos len - } bind def -/s1 1 string def -/fl { - /len exch def - /pos exch def - /val cf s1 readhexstring pop 0 get def - pos 1 pos len add 1 sub {im exch val put} for - pos len - } bind def -/hx { - 3 copy getinterval - cf exch readhexstring pop pop - } bind def - /h FMLOCAL - /w FMLOCAL - /d FMLOCAL - /lb FMLOCAL - /bitmapsave FMLOCAL - /is FMLOCAL - /cf FMLOCAL -/wbytes { - dup dup - 24 eq { pop pop 3 mul } - { 8 eq {pop} {1 eq {7 add 8 idiv} {3 add 4 idiv} ifelse} ifelse } ifelse - } bind def -/BEGINBITMAPBWc { - 1 {} COMMONBITMAPc - } bind def -/BEGINBITMAPGRAYc { - 8 {} COMMONBITMAPc - } bind def -/BEGINBITMAP2BITc { - 2 {} COMMONBITMAPc - } bind def -/COMMONBITMAPc { - - /r exch def - /d exch def - gsave - - 3 index 2 div add exch - 4 index 2 div add exch - translate - rotate - 1 index 2 div neg - 1 index 2 div neg - translate - scale - /h exch def /w exch def - /lb w d wbytes def - sl lb lt {lb ms} if - /bitmapsave save def - r - /is im 0 lb getinterval def - ws 0 lb getinterval is copy pop - /cf currentfile def - w h d [w 0 0 h neg 0 h] - {ip} image - bitmapsave restore - grestore - } bind def -/BEGINBITMAPBW { - 1 {} COMMONBITMAP - } bind def -/BEGINBITMAPGRAY { - 8 {} COMMONBITMAP - } bind def -/BEGINBITMAP2BIT { - 2 {} COMMONBITMAP - } bind def -/COMMONBITMAP { - /r exch def - /d exch def - gsave - - 3 index 2 div add exch - 4 index 2 div add exch - translate - rotate - 1 index 2 div neg - 1 index 2 div neg - translate - scale - /h exch def /w exch def - /bitmapsave save def - r - /is w d wbytes string def - /cf currentfile def - w h d [w 0 0 h neg 0 h] - {cf is readhexstring pop} image - bitmapsave restore - grestore - } bind def -/ngrayt 256 array def -/nredt 256 array def -/nbluet 256 array def -/ngreent 256 array def - /gryt FMLOCAL - /blut FMLOCAL - /grnt FMLOCAL - /redt FMLOCAL - /indx FMLOCAL - /cynu FMLOCAL - /magu FMLOCAL - /yelu FMLOCAL - /k FMLOCAL - /u FMLOCAL -FMLevel1 { -/colorsetup { - currentcolortransfer - /gryt exch def - /blut exch def - /grnt exch def - /redt exch def - 0 1 255 { - /indx exch def - /cynu 1 red indx get 255 div sub def - /magu 1 green indx get 255 div sub def - /yelu 1 blue indx get 255 div sub def - /k cynu magu min yelu min def - /u k currentundercolorremoval exec def -% /u 0 def - nredt indx 1 0 cynu u sub max sub redt exec put - ngreent indx 1 0 magu u sub max sub grnt exec put - nbluet indx 1 0 yelu u sub max sub blut exec put - ngrayt indx 1 k currentblackgeneration exec sub gryt exec put - } for - {255 mul cvi nredt exch get} - {255 mul cvi ngreent exch get} - {255 mul cvi nbluet exch get} - {255 mul cvi ngrayt exch get} - setcolortransfer - {pop 0} setundercolorremoval - {} setblackgeneration - } bind def -} -{ -/colorSetup2 { - [ /Indexed /DeviceRGB 255 - {dup red exch get 255 div - exch dup green exch get 255 div - exch blue exch get 255 div} - ] setcolorspace -} bind def -} ifelse - /tran FMLOCAL -/fakecolorsetup { - /tran 256 string def - 0 1 255 {/indx exch def - tran indx - red indx get 77 mul - green indx get 151 mul - blue indx get 28 mul - add add 256 idiv put} for - currenttransfer - {255 mul cvi tran exch get 255.0 div} - exch concatprocs settransfer -} bind def -/BITMAPCOLOR { - /d 8 def - gsave - - 3 index 2 div add exch - 4 index 2 div add exch - translate - rotate - 1 index 2 div neg - 1 index 2 div neg - translate - scale - /h exch def /w exch def - /bitmapsave save def - FMLevel1 { - colorsetup - /is w d wbytes string def - /cf currentfile def - w h d [w 0 0 h neg 0 h] - {cf is readhexstring pop} {is} {is} true 3 colorimage - } { - colorSetup2 - /is w d wbytes string def - /cf currentfile def - 7 dict dup begin - /ImageType 1 def - /Width w def - /Height h def - /ImageMatrix [w 0 0 h neg 0 h] def - /DataSource {cf is readhexstring pop} bind def - /BitsPerComponent d def - /Decode [0 255] def - end image - } ifelse - bitmapsave restore - grestore - } bind def -/BITMAPCOLORc { - /d 8 def - gsave - - 3 index 2 div add exch - 4 index 2 div add exch - translate - rotate - 1 index 2 div neg - 1 index 2 div neg - translate - scale - /h exch def /w exch def - /lb w d wbytes def - sl lb lt {lb ms} if - /bitmapsave save def - FMLevel1 { - colorsetup - /is im 0 lb getinterval def - ws 0 lb getinterval is copy pop - /cf currentfile def - w h d [w 0 0 h neg 0 h] - {ip} {is} {is} true 3 colorimage - } { - colorSetup2 - /is im 0 lb getinterval def - ws 0 lb getinterval is copy pop - /cf currentfile def - 7 dict dup begin - /ImageType 1 def - /Width w def - /Height h def - /ImageMatrix [w 0 0 h neg 0 h] def - /DataSource {ip} bind def - /BitsPerComponent d def - /Decode [0 255] def - end image - } ifelse - bitmapsave restore - grestore - } bind def -/BITMAPTRUECOLORc { - /d 24 def - gsave - - 3 index 2 div add exch - 4 index 2 div add exch - translate - rotate - 1 index 2 div neg - 1 index 2 div neg - translate - scale - /h exch def /w exch def - /lb w d wbytes def - sl lb lt {lb ms} if - /bitmapsave save def - - /is im 0 lb getinterval def - /ris im 0 w getinterval def - /gis im w w getinterval def - /bis im w 2 mul w getinterval def - - ws 0 lb getinterval is copy pop - /cf currentfile def - w h 8 [w 0 0 h neg 0 h] - {w rip pop ris} {gis} {bis} true 3 colorimage - bitmapsave restore - grestore - } bind def -/BITMAPTRUECOLOR { - gsave - - 3 index 2 div add exch - 4 index 2 div add exch - translate - rotate - 1 index 2 div neg - 1 index 2 div neg - translate - scale - /h exch def /w exch def - /bitmapsave save def - /is w string def - /gis w string def - /bis w string def - /cf currentfile def - w h 8 [w 0 0 h neg 0 h] - { cf is readhexstring pop } - { cf gis readhexstring pop } - { cf bis readhexstring pop } - true 3 colorimage - bitmapsave restore - grestore - } bind def -/BITMAPTRUEGRAYc { - /d 24 def - gsave - - 3 index 2 div add exch - 4 index 2 div add exch - translate - rotate - 1 index 2 div neg - 1 index 2 div neg - translate - scale - /h exch def /w exch def - /lb w d wbytes def - sl lb lt {lb ms} if - /bitmapsave save def - - /is im 0 lb getinterval def - /ris im 0 w getinterval def - /gis im w w getinterval def - /bis im w 2 mul w getinterval def - ws 0 lb getinterval is copy pop - /cf currentfile def - w h 8 [w 0 0 h neg 0 h] - {w rip pop ris gis bis w gray} image - bitmapsave restore - grestore - } bind def -/ww FMLOCAL -/r FMLOCAL -/g FMLOCAL -/b FMLOCAL -/i FMLOCAL -/gray { - /ww exch def - /b exch def - /g exch def - /r exch def - 0 1 ww 1 sub { /i exch def r i get .299 mul g i get .587 mul - b i get .114 mul add add r i 3 -1 roll floor cvi put } for - r - } bind def -/BITMAPTRUEGRAY { - gsave - - 3 index 2 div add exch - 4 index 2 div add exch - translate - rotate - 1 index 2 div neg - 1 index 2 div neg - translate - scale - /h exch def /w exch def - /bitmapsave save def - /is w string def - /gis w string def - /bis w string def - /cf currentfile def - w h 8 [w 0 0 h neg 0 h] - { cf is readhexstring pop - cf gis readhexstring pop - cf bis readhexstring pop w gray} image - bitmapsave restore - grestore - } bind def -/BITMAPGRAY { - 8 {fakecolorsetup} COMMONBITMAP - } bind def -/BITMAPGRAYc { - 8 {fakecolorsetup} COMMONBITMAPc - } bind def -/ENDBITMAP { - } bind def -end - /ALDsave FMLOCAL - /ALDmatrix matrix def ALDmatrix currentmatrix pop -/StartALD { - /ALDsave save def - savematrix - ALDmatrix setmatrix - } bind def -/InALD { - restorematrix - } bind def -/DoneALD { - ALDsave restore - } bind def -/I { setdash } bind def -/J { [] 0 setdash } bind def -%%EndProlog -%%BeginSetup -(4.0) FMVERSION -1 1 0 0 612 792 0 1 12 FMDOCUMENT -0 0 /Times-Roman FMFONTDEFINE -1 0 /Times-Bold FMFONTDEFINE -2 0 /Times-Italic FMFONTDEFINE -3 0 /Helvetica-Bold FMFONTDEFINE -4 1 /Symbol FMFONTDEFINE -32 FMFILLS -0 0 FMFILL -1 0.1 FMFILL -2 0.3 FMFILL -3 0.5 FMFILL -4 0.7 FMFILL -5 0.9 FMFILL -6 0.97 FMFILL -7 1 FMFILL -8 <0f1e3c78f0e1c387> FMFILL -9 <0f87c3e1f0783c1e> FMFILL -10 FMFILL -11 FMFILL -12 <8142241818244281> FMFILL -13 <03060c183060c081> FMFILL -14 <8040201008040201> FMFILL -16 1 FMFILL -17 0.9 FMFILL -18 0.7 FMFILL -19 0.5 FMFILL -20 0.3 FMFILL -21 0.1 FMFILL -22 0.03 FMFILL -23 0 FMFILL -24 FMFILL -25 FMFILL -26 <3333333333333333> FMFILL -27 <0000ffff0000ffff> FMFILL -28 <7ebddbe7e7dbbd7e> FMFILL -29 FMFILL -30 <7fbfdfeff7fbfdfe> FMFILL -%%EndSetup -%%Page: "5" 1 -%%BeginPaperSize: Letter -%%EndPaperSize -612 792 0 FMBEGINPAGE -[0 0 0 1 0 0 0] -[ 0 1 1 0 1 0 0] -[ 1 0 1 0 0 1 0] -[ 1 1 0 0 0 0 1] -[ 1 0 0 0 0 1 1] -[ 0 1 0 0 1 0 1] -[ 0 0 1 0 1 1 0] - 7 FrameSetSepColors -FrameNoSep -0 0 0 1 0 0 0 K -J -0 0 0 1 0 0 0 K -0 0 0 1 0 0 0 K -0 0 0 1 0 0 0 K -0 0 0 1 0 0 0 K -0 0 0 1 0 0 0 K -108 54 540 54 2 L -0.25 H -2 Z -0 X -0 0 0 1 0 0 0 K -N -0 8 Q -(EPICS General Purpose CAMAC Device Support) 108 42.5 T -(August 2, 1994) 299.44 42.5 T -(5) 536 42.5 T -1 16 Q -(4.0 Futur) 108 709.33 T -(e W) 175.71 709.33 T -(ork) 201.94 709.33 T -0 12 Q -(When the usage of LAM and CTST) 108 682 T -(A) 279.01 682 T -(T call become available in the camacLib library) 286.34 682 T -(, the) 515.17 682 T --0.17 (asynchronous device support can be implemented and the error handling can be improved) 108 668 P -(in the current CAMAC device support implementation. Some of ideas planned to be) 108 654 T -(implemented are:) 108 640 T -(1\051 optional appending an additional CAMAC function code into the P) 108 614 T -(ARAM \336eld of the) 442.21 614 T -(CAMAC address for the purpose of initialization of a CAMAC module.) 108 600 T -(2\051 optionally using hex number speci\336cation in the P) 108 574 T -(ARAM \336eld.) 360.89 574 T -(3\051 registering power) 108 548 T -(-on callbacks to automatically re-initialize modules after a crate) 205.07 548 T -(power cycle.) 108 534 T -(4\051 Support for all \337avours of block read by aai, aao and waveform record types.) 108 508 T -(5\051 support for asynchronous processing \050IOEVENT processing on a LAM\051.) 108 482 T -(6\051 error detecting and reporting.) 108 456 T -1 16 Q -(5.0 Refer) 108 415.33 T -(ences) 173.9 415.33 T -0 12 Q -([1] <> Marty W) 108 374 T -(ise, CEBAF) 362.69 374 T -([2] <> IEEE Std 758-1979) 108 348 T -([3] <>) 317.63 322 T -FMENDPAGE -%%EndPage: "5" 1 -%%Page: "4" 2 -612 792 0 FMBEGINPAGE -[0 0 0 1 0 0 0] -[ 0 1 1 0 1 0 0] -[ 1 0 1 0 0 1 0] -[ 1 1 0 0 0 0 1] -[ 1 0 0 0 0 1 1] -[ 0 1 0 0 1 0 1] -[ 0 0 1 0 1 1 0] - 7 FrameSetSepColors -FrameNoSep -0 0 0 1 0 0 0 K -0 0 0 1 0 0 0 K -0 0 0 1 0 0 0 K -0 0 0 1 0 0 0 K -108 54 540 54 2 L -0.25 H -2 Z -0 X -0 0 0 1 0 0 0 K -N -0 8 Q -(EPICS General Purpose CAMAC Device Support) 108 42.5 T -(August 2, 1994) 299.44 42.5 T -(4) 536 42.5 T -1 14 Q -(2.5 r) 108 710.67 T -(ead_XX\050\051 / write_XX\050\051 --- The Record Speci\336c I/O Function) 141.96 710.67 T -0 12 Q --0.26 (The read_XX\050\051 or write_XX\050\051 function is called every time when the record is processed.) 108 684 P --0.22 (It is record type speci\336c. In general, it performs a single or multiple CAMAC action via a) 108 670 P -(camacLib call.) 108 656 T -1 16 Q -(3.0 Installing The CAMAC Device Support Modules) 108 615.33 T -0 12 Q -(T) 108 588 T -(o make use of a CAMAC device support module in your current EPICS release, do the) 114.49 588 T -(following steps \050assumes you already have all the record support routines in your current) 108 574 T -(release\051. Refer to chapter 7 of <<) 108 560 T -2 F -(EPICS: IOC Application Developer) 267.14 560 T -(\325) 439.9 560 T -(s Guide) 442.34 560 T -0 F -(>> for how) 479.34 560 T -(to add a new type of record into a system.) 108 546 T -(Step 1: Copy .c, .h, .ascii source \336les into appropriate subdirectories) 108 520 T -(Copy dev*Camac.c to /share/src/dev) 135 500 T -(Copy devCamac.h to /share/epicsH) 135 480 T -(Step 2: Add entries in /share/ascii/devSup.ascii \336le:) 108 460 T -( \322ai\323 \322CAMAC_IO\323 \322devAiCamac\323 \322Camac\323) 135 440 T -( \322ao\323 \322CAMAC_IO\323 \322devAoCamac\323 \322Camac\323) 135 420 T -( ......) 135 400 T -(Step 3: Make new SDR) 108 380 T -( cd /share/sdr; make) 135 360 T -(Step 4: Add entries in /Vx/share/dev/Imake\336le) 108 340 T -($\050SRC\051/devAiCamac.c \134) 135 320 T -($\050SRC\051/devAoCamac.c \134) 135 300 T -( ....) 135 280 T -(devAiCamac.o \134) 135 260 T -(devAoCamac.o \134) 135 240 T -( ....) 135 220 T -(MakeObjectFromSrc\050devAiCamac\051) 135 200 T -(MakeObjectFromSrc\050devAoCamac\051) 135 180 T -(....) 135 160 T -(Step 5: Build the new make\336le of Camac Device Support for ) 108 140 T -(cd /Vx//dev; Buildit) 135 120 T -(Step 6: cd /Vx/; make _db _rec _dev iocCore) 108 100 T -FMENDPAGE -%%EndPage: "4" 2 -%%Page: "3" 3 -612 792 0 FMBEGINPAGE -[0 0 0 1 0 0 0] -[ 0 1 1 0 1 0 0] -[ 1 0 1 0 0 1 0] -[ 1 1 0 0 0 0 1] -[ 1 0 0 0 0 1 1] -[ 0 1 0 0 1 0 1] -[ 0 0 1 0 1 1 0] - 7 FrameSetSepColors -FrameNoSep -0 0 0 1 0 0 0 K -0 0 0 1 0 0 0 K -0 0 0 1 0 0 0 K -0 0 0 1 0 0 0 K -108 54 540 54 2 L -0.25 H -2 Z -0 X -0 0 0 1 0 0 0 K -N -0 8 Q -(EPICS General Purpose CAMAC Device Support) 108 42.5 T -(August 2, 1994) 299.44 42.5 T -(3) 536 42.5 T -3 9 Q -(NULL }) 216 714 T -(/* pointer to special_linconv */) 288 714 T -0 12 Q -(In this implementation, only three functions are implemented in each device support) 108 693 T -(module: a general init function, a record speci\336c function and a record speci\336c I/O func-) 108 679 T -(tion.) 108 665 T -1 14 Q -(2.3 init\050\051 --- The General Initialization Function) 108 631.67 T -0 12 Q -(The init\050\051 function only is used as a dummy function for debug purposes in the current) 108 605 T -(implementation. It is called twice at ioc initialization time.) 108 591 T -1 14 Q -(2.4 init_r) 108 557.67 T -(ecord\050\051 --- The Record Speci\336c Initialization Function) 165.69 557.67 T -0 12 Q -(The init_record\050\051 function is called by the record support init_record function during the) 108 531 T -(record initialization time. In this CAMAC device support implementation, it does follow-) 108 517 T -(ing things:) 108 503 T -(1.) 108 483 T -(Checks if the device type of the current record is CAMAC_IO. If not, it reports illegal) 121.75 483 T -(I/O \336eld error) 121.75 469 T -(.) 187.73 469 T -(2.) 108 449 T -(Retrieves b, c, n, a, f parameters directly from the pcamacio structure) 121.75 449 T -(3.) 108 429 T --0.47 (Retrieves the Param from pcamacio->parm by using the routine sscanf to retrieve either) 121.75 429 P -(hex or integer values. \050Note: atoi will translate hex values into 0, since it expects dec-) 121.75 415 T -(imal. The routine sscanf is much less ef) 121.75 401 T -(\336cient than atoi, but since this is only used at) 314.5 401 T -(record initialization time it should be worth the loss in ef) 121.75 387 T -(\336ciency to keep the users of) 394.18 387 T --0.26 (records from having to remember that 24 bits of 1\325) 121.75 373 P --0.26 (s is 16777215 in decimal. It is much) 362.35 373 P -(easier to read the parameter when using 0xf) 121.75 359 T -(f) 331.13 359 T -(f) 334.91 359 T -(f) 338.69 359 T -(f) 342.47 359 T -(f or 0x1000000.\051) 346.25 359 T -(4.) 108 327.97 T --0.28 (For Analog records and longs if Param is of the form) 121.75 327.97 P --0.28 (, it is set to) 414.45 327.97 P --0.28 (. Then cal-) 488.9 327.97 P -(culates the engineering conversion slope,) 121.75 312 T -(ESLP = \050EFUL - ELOW\051/ P) 121.75 298 T -(ARAM.) 257.07 298 T -(4.1) 108 272.97 T --0.34 (. Sets the bit-mask) 123 272.97 P --0.34 (For Longs and Analog records sets the bit-mask to) 213.32 272.97 P --0.34 ( where n) 496.7 272.97 P -(is the least value satisfying the inequality: For Binaries\050bi and bo\051 sets the record) 121.75 258.97 T -(MASK \336eld to 1 shifted to the left by Param bits.) 121.75 222.97 T -(4.2) 108 208.97 T -(. For Multibit binaries sets the record SHFT \336eld to Param, and shifts the record\325) 123 208.97 T -(s) 513.97 208.97 T --0.22 (MASK \336eld to the left by Param bits. \050The record support code has already calculated) 121.75 194.97 P -(an initial value for the MASK \336eld using NOBT) 121.75 180.97 T -(.\051) 353.51 180.97 T -(5.) 108 160.97 T --0.07 ( Mallocs an array to hold a pointer to the CAMAC register de\336ned by a call to cdreg\050\051,) 121.75 160.97 P -(a CAMAC function code and the bit-mask for passing to the record speci\336c I/O func-) 121.75 146.97 T -(tion.) 121.75 132.97 T -376.34 327.97 414.45 347 C -0 0 0 1 0 0 0 K -0 0 0 1 0 0 0 K -0 9 Q -0 X -0 0 0 1 0 0 0 K -(2) 380.14 330.28 T -2 7 Q -(n) 384.98 335.75 T -0 9 Q -(1) 397.47 330.28 T -(\320) 390.72 330.28 T -0 -208 1000 792 C -465.69 322 488.9 347 C -0 0 0 1 0 0 0 K -0 0 0 1 0 0 0 K -0 9 Q -0 X -0 0 0 1 0 0 0 K -(2) 476.23 330.28 T -2 7 Q -(n) 481.08 335.75 T -0 -208 1000 792 C -458.58 272.97 496.7 292 C -0 0 0 1 0 0 0 K -0 0 0 1 0 0 0 K -0 9 Q -0 X -0 0 0 1 0 0 0 K -(2) 462.38 275.28 T -2 7 Q -(n) 467.22 280.75 T -0 9 Q -(1) 479.72 275.28 T -(\320) 472.97 275.28 T -0 -208 1000 792 C -108 63 540 720 C -259.5 232.97 388.5 254.97 C -0 0 0 1 0 0 0 K -0 0 0 1 0 0 0 K -0 9 Q -0 X -0 0 0 1 0 0 0 K -(2) 293.8 240.97 T -2 7 Q -(n) 298.64 246.44 T -2 9 Q -(P) 311.58 240.97 T -(a) 317.61 240.97 T -(r) 322.64 240.97 T -(a) 326.67 240.97 T -(m) 331.7 240.97 T -4 F -(\263) 304.39 240.97 T -108 63 540 720 C -0 -208 1000 792 C -FMENDPAGE -%%EndPage: "3" 3 -%%Page: "2" 4 -612 792 0 FMBEGINPAGE -[0 0 0 1 0 0 0] -[ 0 1 1 0 1 0 0] -[ 1 0 1 0 0 1 0] -[ 1 1 0 0 0 0 1] -[ 1 0 0 0 0 1 1] -[ 0 1 0 0 1 0 1] -[ 0 0 1 0 1 1 0] - 7 FrameSetSepColors -FrameNoSep -0 0 0 1 0 0 0 K -0 0 0 1 0 0 0 K -0 0 0 1 0 0 0 K -0 0 0 1 0 0 0 K -108 54 540 54 2 L -0.25 H -2 Z -0 X -0 0 0 1 0 0 0 K -N -0 8 Q -(EPICS General Purpose CAMAC Device Support) 108 42.5 T -(August 2, 1994) 299.44 42.5 T -(2) 536 42.5 T -1 12 Q -(2.1.1 Examples of Legal Camac Addr) 108 712 T -(esses and r) 301.78 712 T -(elated \336elds) 356.89 712 T -0 F -(1.) 108 692 T -(For an analog input record \050ai\051 an example address is:) 121.75 692 T -(#B0 C1 N3 A0 F16 @0xf) 121.75 678 T -(f) 245.59 678 T -(f) 249.37 678 T -(f) 253.15 678 T -(for records whose values are in engineering units rather than bits the following \336elds) 121.75 664 T -(are also important:) 121.75 650 T -(LINR LINEAR) 121.75 636 T -(EGUF 10.0) 121.75 622 T -(EGUL -10.0) 121.75 608 T -(In this example A0 F16 is a command to read the card at branch 0 crate controller 1) 121.75 594 T -(slot 3. The parameter 0xf) 121.75 580 T -(f) 242.5 580 T -(f) 246.28 580 T -(f speci\336es that the bit mask will be the \336rst 16 bits in the) 250.06 580 T -(word, and that the linearization slope will be calculated in the device driver by the) 121.75 566 T -(equation.) 121.75 552 T -(ESLP = \05010.0 - \050-10.0\051 \051/ 0x10000.) 121.75 538 T -(2.) 108 518 T -(For a multibit binary output \050mbbo\051 an example address is:) 121.75 518 T -(OUT #B0 C1 N4 A1 F19 @2) 121.75 504 T --0.26 (In the case of multibit binary records the NOBT \336eld is important, if it is 0 nothing will) 121.75 490 P -(be written:.) 121.75 476 T -(NOBT 4) 121.75 462 T --0.03 (In this example the A1 F19 is a command to the Jorway 201 card in Branch 0, Crate) 121.75 448 P -(controller 1, slot 4 to selectively set lights. NOBT 4 means that a block of 4 bits will) 121.75 434 T -(be selectively set. The parameter 2 means that the block will start at bit 2 \050the 3rd bit\051) 121.75 420 T -(in the word.) 121.75 406 T -1 14 Q -(2.2 The Requir) 108 372.67 T -(ed DSET T) 201.09 372.67 T -(able Entries) 266.7 372.67 T -0 12 Q -(DSET tables \050Device Support Entry T) 108 346 T -(ables\051 are what EPICS uses to interact with device) 290.14 346 T -(support routines from record support routines. There must be one for each type of record) 108 332 T -(supported by the device support. Refer <<) 108 318 T -2 F -(EPICS: IOC Application Developer) 310.5 318 T -(\325) 483.25 318 T -(s Guide) 485.7 318 T -0 F -(>>) 522.7 318 T -(for detailed information on DSET) 108 304 T -(. A typical DSET table used in a CAMAC device sup-) 269.76 304 T -(port mdule for an input record looks like this:) 108 290 T -3 9 Q -(devXXCamac = {) 180 269 T -(6,) 216 257 T -(/* number of EPICS elements in the DSET table */) 288 257 T -(NULL,) 216 245 T -(/* pointer to report function */) 288 245 T -(init,) 216 233 T -(/* pointer to general init function */) 288 233 T -(init_record) 216 221 T -(/* pointer to record speci\336c init function */) 288 221 T -(NULL,) 216 209 T -(/* pointer to get i/o interrupt information function */) 288 209 T -(read_XX,) 216 197 T -(/* pointer to record-speci\336c I/O function */) 288 197 T -(NULL }) 216 185 T -(/* pointer to special_linconv */) 288 185 T -0 12 Q -(Similarly) 108 168 T -(, a typical DSET used for a output record device support is like this:) 151.9 168 T -3 9 Q -(devXXCamac = {) 180 147 T -(6,) 216 135 T -(/* number of EPICS elements in the DSET table */) 288 135 T -(NULL,) 216 123 T -(/* pointer to report function */) 288 123 T -(init,) 216 111 T -(/* pointer to general init function */) 288 111 T -(init_record) 216 99 T -(/* pointer to record speci\336c init function */) 288 99 T -(NULL,) 216 87 T -(/* pointer to get i/o interrupt information function */) 288 87 T -(write_XX,) 216 75 T -(/* pointer to record-speci\336c I/O function */) 288 75 T -FMENDPAGE -%%EndPage: "2" 4 -%%Page: "1" 5 -612 792 0 FMBEGINPAGE -[0 0 0 1 0 0 0] -[ 0 1 1 0 1 0 0] -[ 1 0 1 0 0 1 0] -[ 1 1 0 0 0 0 1] -[ 1 0 0 0 0 1 1] -[ 0 1 0 0 1 0 1] -[ 0 0 1 0 1 1 0] - 7 FrameSetSepColors -FrameNoSep -0 0 0 1 0 0 0 K -0 0 0 1 0 0 0 K -0 0 0 1 0 0 0 K -0 0 0 1 0 0 0 K -108 54 540 54 2 L -0.25 H -2 Z -0 X -0 0 0 1 0 0 0 K -N -0 8 Q -(EPICS General Purpose CAMAC Device Support) 108 42.5 T -(August 2, 1994) 299.44 42.5 T -(1) 536 42.5 T -1 18 Q -(EPICS General Purpose CAMAC Device Support) 132.26 708 T -0 12 Q -(Continuous Electron Beam Accelerator Facility) 209.68 675 T -(Southeastern Universities Research Association) 209.18 665 T -(Johnny T) 223.75 639 T -(ang, Chip W) 267.91 639 T -(atson, David Barker) 327.94 639 T -2 F -(May 1) 291.28 623 T -(1, 1994) 320.72 623 T -(Modi\336ed by Rozelle W) 219.34 607 T -(right, August 2, 1994) 326.99 607 T -(AOT) 161.93 591 T -(-8, Los Alamos National Laboratory) 183.71 591 T -(, Los Alamos, New Mexico) 358.07 591 T -1 16 Q -(1.0 Intr) 108 548.33 T -(oduction) 163.26 548.33 T -0 12 Q -(The EPICS general purpose CAMAC device support is a set of modules used to provide) 108 521 T --0.46 (access to CAMAC modules via EPICS database records. The device support uses standard) 108 507 P -(CAMAC library calls based on IEEE std 758-1979. This library has been implemented at) 108 493 T -(CEBAF for serial highway interface. The design and the functions of the device support) 108 479 T -(modules, and how to install them into a system, are described in this documentation.) 108 465 T -1 16 Q -(2.0 The CAMAC Device Support Routines) 108 424.33 T -0 12 Q --0.03 (Thirteen types of records currently have the CAMAC device support: ai, ao, aai, aao, bi,) 108 397 P --0.26 (bo, li, lo, mbbi, mbbo, mbbidirect, mbbodirect and waveform. A CAMAC device support) 108 383 P -(module consists of DSET table entries and a set of function routines. Presently) 108 369 T -(, only syn-) 484.85 369 T -(chronous device support has been implemented.) 108 355 T -1 14 Q --0.06 (2.1 Specifying Camac Device Support and Addr) 108 321.67 P --0.06 (ess in Database Records) 396.68 321.67 P -0 12 Q -(There are two device related record \336elds to be used to specify CAMAC device support) 108 295 T -(and CAMAC address:) 108 281 T -(DTYP) 108 255 T -(Camac) 180 255 T -(INP or OUT) 108 243 T -(#Ba Cb Nc Ad Fe @param) 180 243 T --0.13 (where a is the Branch number) 108 225 P --0.13 (, b is the Crate number) 250.49 225 P --0.13 (, c is the Station number) 358.67 225 P --0.13 (, d is the Sub-) 474.19 225 P -(address and e is the Function code.) 108 211 T -(The contents of param depend on the record type. In the case of records which expect all) 108 185 T -(bits read to be used \050i.e. ai, ao, aai, aao, li,lo records\051, the parameter is used for determin-) 108 171 T --0.09 (ing the maximum number of legal bits that can be read from or written to the Camac mod-) 108 157 P -(ule and is used to create a bit mask, which is anded with the Camac data. In the case of) 108 143 T -(analog records ai, ao, aai, and aao it is also used for calculations of engineering conver-) 108 129 T -(sion slope. In the case of binary records bi, bo, mbbi, mbbo, mbbidirect, mbbodirect it) 108 115 T -(represents the bit position of the \336rst bit to be read or written. By convention bit 0 corre-) 108 101 T -(sponds to the least signi\336cant bit.) 108 87 T -FMENDPAGE -%%EndPage: "1" 5 -%%Trailer -%%BoundingBox: 0 0 612 792 -%%PageOrder: Descend -%%Pages: 5 -%%DocumentFonts: Times-Roman -%%+ Times-Bold -%%+ Times-Italic -%%+ Helvetica-Bold -%%+ Symbol -%%EOF