1
0
Files
2022-09-29 17:59:04 +03:00

1510 lines
34 KiB
PostScript

%!
%%BoundingBox: (atend)
%%Pages: (atend)
%%DocumentFonts: (atend)
%%EndComments
%
% FrameMaker PostScript Prolog 3.0, for use with FrameMaker 3.0
% Copyright (c) 1986,87,89,90,91 by Frame Technology Corporation.
% All rights reserved.
%
% Known Problems:
% Due to bugs in Transcript, the 'PS-Adobe-' is omitted from line 1
/FMversion (3.0) def
% Set up Color vs. Black-and-White
/FMPrintInColor systemdict /colorimage known
systemdict /currentcolortransfer known or def
% Uncomment this line to force b&w on color printer
% /FMPrintInColor false def
/FrameDict 295 dict def
systemdict /errordict known not {/errordict 10 dict def
errordict /rangecheck {stop} put} if
% The readline in 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
} def
} if
/FMVERSION {
FMversion ne {
/Times-Roman findfont 18 scalefont setfont
100 100 moveto
(FrameMaker version does not match postscript_prolog!)
dup =
show showpage
} if
} def
/FMLOCAL {
FrameDict begin
0 def
end
} def
/gstring FMLOCAL
/gfile FMLOCAL
/gindex FMLOCAL
/orgxfer FMLOCAL
/orgproc FMLOCAL
/organgle FMLOCAL
/orgfreq FMLOCAL
/yscale FMLOCAL
/xscale FMLOCAL
/manualfeed FMLOCAL
/paperheight FMLOCAL
/paperwidth FMLOCAL
/FMDOCUMENT {
array /FMfonts exch def
/#copies exch def
FrameDict begin
0 ne dup {setmanualfeed} if
/manualfeed exch def
/paperheight exch def
/paperwidth exch def
/yscale exch def
/xscale exch def
currenttransfer cvlit /orgxfer exch def
currentscreen cvlit /orgproc exch def
/organgle exch def /orgfreq exch def
setpapername
manualfeed {true} {papersize} ifelse
{manualpapersize} {false} ifelse
{desperatepapersize} if
end
} def
/pagesave FMLOCAL
/orgmatrix FMLOCAL
/landscape FMLOCAL
/FMBEGINPAGE {
FrameDict begin
/pagesave save def
3.86 setmiterlimit
/landscape exch 0 ne def
landscape {
90 rotate 0 exch neg translate pop
}
{pop pop}
ifelse
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
array /fillvals 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
FMNORMALIZEGRAPHICS
[/fy /fx /fh /fw /ury /urx /lly /llx] {exch def} forall
fx fy translate
rotate
fw urx llx sub div fh ury lly sub div scale
llx neg lly neg translate
} bind def
/FMENDEPSF {
FMEPSF restore
FrameDict begin
} bind def
FrameDict begin
/setmanualfeed {
%%BeginFeature *ManualFeed True
statusdict /manualfeed true put
%%EndFeature
} 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
} 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
} 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
/FMdicttop countdictstack 1 add def
statusdict begin stopped end
countdictstack -1 FMdicttop {pop end} for
} 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
} def
/desperatepapersize {
statusdict /setpageparams known
{
paperwidth paperheight 0 1
statusdict begin
{setpageparams} stopped pop
end
} if
} 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 18.75 div 8 div round dup 0 eq {pop 1} if 8 mul dpi exch div def
/sangle 1 0 dmatrix defaultmatrix dtransform exch atan 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
/graymode true def
/bwidth FMLOCAL
/bpside FMLOCAL
/bstring FMLOCAL
/onbits FMLOCAL
/offbits FMLOCAL
/xindex FMLOCAL
/yindex FMLOCAL
/x FMLOCAL
/y FMLOCAL
/setpattern {
/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
{/onbits onbits 1 add def 1}
{/offbits offbits 1 add def 0}
ifelse
}
setscreen
{} settransfer
offbits offbits onbits add div FMsetgray
/graymode false def
} bind def
/grayness {
FMsetgray
graymode not {
/graymode true def
orgxfer cvx settransfer
orgfreq organgle orgproc cvx setscreen
} if
} bind def
/HUE FMLOCAL
/SAT FMLOCAL
/BRIGHT FMLOCAL
/Colors FMLOCAL
FMPrintInColor
{
/HUE 0 def
/SAT 0 def
/BRIGHT 0 def
% array of arrays Hue and Sat values for the separations [HUE BRIGHT]
/Colors
[[0 0 ] % black
[0 0 ] % white
[0.00 1.0] % red
[0.37 1.0] % green
[0.60 1.0] % blue
[0.50 1.0] % cyan
[0.83 1.0] % magenta
[0.16 1.0] % comment / yellow
] def
/BEGINBITMAPCOLOR {
BITMAPCOLOR} def
/BEGINBITMAPCOLORc {
BITMAPCOLORc} def
/BEGINBITMAPTRUECOLOR {
BITMAPTRUECOLOR } def
/BEGINBITMAPTRUECOLORc {
BITMAPTRUECOLORc } def
/K {
Colors exch get dup
0 get /HUE exch store
1 get /BRIGHT exch store
HUE 0 eq BRIGHT 0 eq and
{1.0 SAT sub setgray}
{HUE SAT BRIGHT sethsbcolor}
ifelse
} def
/FMsetgray {
/SAT exch 1.0 exch sub store
HUE 0 eq BRIGHT 0 eq and
{1.0 SAT sub setgray}
{HUE SAT BRIGHT sethsbcolor}
ifelse
} bind def
}
{
/BEGINBITMAPCOLOR {
BITMAPGRAY} def
/BEGINBITMAPCOLORc {
BITMAPGRAYc} def
/BEGINBITMAPTRUECOLOR {
BITMAPTRUEGRAY } def
/BEGINBITMAPTRUECOLORc {
BITMAPTRUEGRAYc } def
/FMsetgray {setgray} bind def
/K {
pop
} def
}
ifelse
/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
/fillvals FMLOCAL
/X {
fillvals exch get
dup type /stringtype eq
{8 1 setpattern}
{grayness}
ifelse
} bind def
/V {
gsave eofill grestore
} bind def
/N {
stroke
} 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
/rad 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
% The following commented out code did not work for tangent lines of zero
% length. The code following it was provided by Frame to patch this error.
%
%/RR {
% /rad exch def
% normalize
% /y2 exch def
% /x2 exch def
% normalize
% /y1 exch def
% /x1 exch def
% newpath
% x1 y1 rad add moveto
% x1 y2 x2 y2 rad arcto
% x2 y2 x2 y1 rad arcto
% x2 y1 x1 y1 rad arcto
% x1 y1 x1 y2 rad arcto
% closepath
% 16 {pop} repeat
% } bind def
/rarc
{rad
{arcto} stopped
} 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
% x2 y1 x1 y1 rarc
x1 y1 x1 y2 rarc
closepath
cleartomark
} bind def
/C {
grestore
gsave
R
clip
} 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 fill
grestore
} 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
stroke
grestore
} 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 4 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
/cip {
is
0
cf cs readline pop
{ ic exch get exec
add
} forall
pop
/tot w 1 sub def
0 1 tot {
/indx exch def
/indxa is indx get def
/placer nredt indxa get def
/placeg ngreent indxa get def
/placeb nbluet indxa get def
cris indx placer 255 mul cvi put
cgis indx placeg 255 mul cvi put
cbis indx placeb 255 mul cvi put
} for pop cris
} bind def
/ip {
is
0
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
8 eq {pop} {1 eq {7 add 8 idiv} {3 add 4 idiv} 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
translate rotate 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
translate rotate 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
/proc1 FMLOCAL
/proc2 FMLOCAL
/newproc FMLOCAL
/Fmcc {
/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
} 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
/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
nredt indx 1 0 cynu max sub redt exec put
ngreent indx 1 0 magu max sub grnt exec put
nbluet indx 1 0 yelu max sub blut exec put
ngrayt indx 1 k sub gryt exec put
} for
} bind def
/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 Fmcc settransfer
} bind def
/BITMAPCOLOR {
/d 8 def
gsave
translate rotate scale /h exch def /w exch def
/bitmapsave save def
colorsetup
/is w d wbytes string def
/ris w d wbytes string def
/gis w d wbytes string def
/bis w d wbytes string def
/cf currentfile def
w h d [w 0 0 h neg 0 h]
{cf is readhexstring pop
/tot w 1 sub def
0 1 tot {
/indx exch def
/indxa is indx get def
/placer nredt indxa get def
/placeg ngreent indxa get def
/placeb nbluet indxa get def
ris indx placer 255 mul cvi put
gis indx placeg 255 mul cvi put
bis indx placeb 255 mul cvi put
} for pop ris}
{gis} {bis} true 3 colorimage
bitmapsave restore
grestore
} bind def
/BITMAPCOLORc {
/d 8 def
gsave
translate rotate scale /h exch def /w exch def
/lb w d wbytes def
sl lb lt {lb ms} if
/bitmapsave save def
colorsetup
/is im 0 lb getinterval def
/cris lb string def
/cgis lb string def
/cbis lb string def
ws 0 lb getinterval is copy pop
/cf currentfile def
w h d [w 0 0 h neg 0 h]
{cip} {cgis} {cbis} true 3 colorimage
bitmapsave restore
grestore
} bind def
/BITMAPTRUECOLORc {
gsave
translate rotate scale /h exch def /w exch def
/bitmapsave save def
/is w string def
ws 0 w getinterval is copy pop
/cf currentfile def
w h 8 [w 0 0 h neg 0 h]
{ip} {gip} {bip} true 3 colorimage
bitmapsave restore
grestore
} bind def
/BITMAPTRUECOLOR {
gsave
translate rotate 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 {
gsave
translate rotate scale /h exch def /w exch def
/bitmapsave save def
/is w string def
ws 0 w getinterval is copy pop
/cf currentfile def
w h 8 [w 0 0 h neg 0 h]
{ip gip bip 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
translate rotate 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
%%EndProlog
%%BeginSetup
(3.0) FMVERSION
1 1 612 792 0 1 13 FMDOCUMENT
0 0 /Palatino-Roman FMFONTDEFINE
1 0 /Helvetica-Bold FMFONTDEFINE
2 0 /Times-Roman FMFONTDEFINE
3 0 /Courier-Bold FMFONTDEFINE
4 0 /Palatino-Italic FMFONTDEFINE
5 0 /Helvetica FMFONTDEFINE
6 0 /Times-Italic 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 <cccccccccccccccc> FMFILL
11 <ffff0000ffff0000> 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 <f0e1c3870f1e3c78> FMFILL
25 <f0783c1e0f87c3e1> FMFILL
26 <3333333333333333> FMFILL
27 <0000ffff0000ffff> FMFILL
28 <7ebddbe7e7dbbd7e> FMFILL
29 <fcf9f3e7cf9f3f7e> FMFILL
30 <7fbfdfeff7fbfdfe> FMFILL
%%EndSetup
%%Page: "1" 1
%%BeginPaperSize: Letter
%%EndPaperSize
612 792 0 FMBEGINPAGE
234 483.31 549 612 R
7 X
0 K
V
0 18 Q
0 X
(Gr) 234 600 T
(oup Interr) 254.51 600 T
(upts on Challenge and) 335.57 600 T
(Onyx Systems) 234 578 T
234 176.74 549 188.74 R
7 X
V
0 10 Q
0 X
(Document Number xxx-xxxx-xxx) 234 182.07 T
FMENDPAGE
%%EndPage: "1" 2
%%Page: "2" 2
612 792 0 FMBEGINPAGE
216 171 549 216 R
7 X
0 K
V
0 9 Q
0 X
(Gr) 216 210 T
(oup Interr) 226.25 210 T
(upts on Challenge and Onyx Systems) 266.74 210 T
(Document Number xxx-xxxx-xxx) 216 199 T
(CONTRIBUT) 216 669 T
(ORS) 269.28 669 T
(W) 216 648 T
(ritten by Luis Stevens) 224.32 648 T
(Illustrated by Luis Stevens) 216 637 T
(\251 Copyright 1994, Silicon Graphics, Inc.\321 All Rights Reserved) 216 614 T
(This document contains pr) 216 602 T
(oprietary and con\336dential information of Silicon) 322.11 602 T
(Graphics, Inc. The contents of this document may not be disclosed to thir) 216 591 T
(d parties,) 505.54 591 T
(copied, or duplicated in any form, in whole or in part, without the prior written) 216 580 T
(permission of Silicon Graphics, Inc.) 216 569 T
(RESTRICTED RIGHTS LEGEND) 216 546 T
(Use, duplication, or disclosur) 216 534 T
(e of the technical data contained in this document by) 332.56 534 T
(the Government is subject to r) 216 523 T
(estrictions as set forth in subdivision \050c\051 \0501\051 \050ii\051 of the) 335.21 523 T
(Rights in T) 216 512 T
(echnical Data and Computer Softwar) 258.61 512 T
(e clause at DF) 405.9 512 T
(ARS 52.227-7013 and/) 460.3 512 T
(or in similar or successor clauses in the F) 216 501 T
(AR, or in the DOD or NASA F) 377.05 501 T
(AR) 496.73 501 T
(Supplement. Unpublished rights r) 216 490 T
(eserved under the Copyright Laws of the United) 351.85 490 T
(States. Contractor/manufactur) 216 479 T
(er is Silicon Graphics, Inc., 201) 338.28 479 T
(1 N. Shor) 458.42 479 T
(eline Blvd.,) 495.36 479 T
(Mountain V) 216 468 T
(iew) 263.57 468 T
(, CA 94039-731) 277.16 468 T
(1.) 335.71 468 T
(Silicon Graphics and IRIS ar) 216 445 T
(e r) 327.51 445 T
(egister) 337.45 445 T
(ed trademarks and IRIX is a trademark of) 363.8 445 T
(Silicon Graphics, Inc. Apollo is a r) 216 434 T
(egister) 350.61 434 T
(ed trademark of Apollo Computer) 376.96 434 T
(, Inc.) 512.99 434 T
-0.17 (FrameMaker is a r) 216 423 P
-0.17 (egister) 287.67 423 P
-0.17 (ed trademark of Frame technology) 314.03 423 P
-0.17 (, Inc. Hewlett-Packar) 450.18 423 P
-0.17 (d is) 532.92 423 P
-0.23 (a r) 216 412 P
-0.23 (egister) 225.9 412 P
-0.23 (ed trademark of Hewlett-Packar) 252.25 412 P
-0.23 (d Company) 379.58 412 P
-0.23 (. IBM is a r) 425.43 412 P
-0.23 (egister) 467.07 412 P
-0.23 (ed trademark) 493.42 412 P
-0.66 (of International Business Machines Corporation. Macintosh is a r) 216 401 P
-0.66 (egister) 467.94 401 P
-0.66 (ed trademark) 494.29 401 P
(of Apple Computer) 216 390 T
(, Inc.) 293.27 390 T
FMENDPAGE
%%EndPage: "2" 3
%%Page: "1" 3
612 792 0 FMBEGINPAGE
1 9 Q
0 X
0 K
(1) 562 109.2 T
1 12 Q
(Hardware Background) 63 682.55 T
2 10 Q
(Interrupts have two components:) 198 662.88 T
3 11 Q
(\245) 234 644.88 T
0 10 Q
(A level between 0 and 255) 252 644.88 T
3 11 Q
(\245) 234 626.88 T
0 10 Q
-0.21 (A destination identi\336er) 252 626.88 P
-0.21 (, used to dir) 353.73 626.88 P
-0.21 (ect the interr) 405.74 626.88 P
-0.21 (upt to a single, a gr) 461.25 626.88 P
-0.21 (oup,) 544.72 626.88 P
(or all cpus) 252 614.88 T
2 F
(Destination identi\336ers 0 through 63 are used to address sigle cpus, identi\336ers 64 through 79) 198 536.49 T
(are used to address groups of cpus \050groups 0 through 15\051, and identi\336er 127 is used to) 198 524.49 T
(address all cpus simultaneously) 198 512.49 T
(.) 323.66 512.49 T
(Interrupt group membership is speci\336ed via a dedicated register) 198 488.49 T
(, on a per cpu basis.) 452.41 488.49 T
(Any cpu may become a member of any one the 16 interrupt groups by setting the corre-) 198 410.49 T
(sponding bit in its Interrupt Group Mask Register) 198 398.49 T
(.) 395.39 398.49 T
(Devices and processors send interrupts by generating a special bus cycle on the EBUS with) 198 374.49 T
(the level and the destination encoded as part of the address.) 198 362.49 T
-0.34 (Interrupt cycles are processed by the CC chip. An R4400 interrupt is generated in each of the) 198 314.49 P
(following cases:) 198 302.49 T
3 11 Q
(\245) 234 284.49 T
0 10 Q
(The destination identi\336er matches the cpu number) 252 284.49 T
3 11 Q
(\245) 234 266.49 T
0 10 Q
(The destination identi\336er r) 252 266.49 T
(epr) 370.11 266.49 T
(esents a gr) 384.68 266.49 T
(oup, and the cpu is a member) 431.12 266.49 T
(of this gr) 252 254.49 T
(oup) 291.33 254.49 T
3 11 Q
(\245) 234 236.49 T
0 10 Q
(The destination identi\336er is the) 252 236.49 T
4 F
(br) 392.35 236.49 T
(oadcast) 400.69 236.49 T
0 F
(destination) 432.78 236.49 T
63 144 567 690.55 C
216 557.16 567 611.55 C
252 575.55 540 593.55 R
1 H
2 Z
0 X
0 K
N
396 591.75 396 575.55 2 L
N
468 593.55 468 573.75 2 L
N
504 593.55 504 575.55 2 L
N
5 7 Q
(7) 505.8 586.35 T
509.4 593.55 509.4 575.55 2 L
N
(6) 511.2 586.35 T
(0) 536.4 586.35 T
(8) 500.4 586.35 T
(15) 469.8 586.35 T
517.66 568.06 529.2 564.75 517.66 561.45 517.66 564.75 4 Y
V
505.8 575.55 505.8 564.75 517.66 564.75 3 L
N
479.53 561.45 468 564.75 479.53 568.06 479.53 564.75 4 Y
V
486 575.55 486 564.75 479.53 564.75 3 L
N
502.93 599.24 491.4 602.55 502.93 605.86 502.93 602.55 4 Y
V
522 593.55 522 602.55 502.93 602.55 3 L
N
(Interrupt Destination ID) 414 601.06 T
(Reserved) 534.6 561.15 T
(Interrupt Level) 412.2 561.15 T
63 144 567 690.55 C
9 72 603 720 C
63 144 567 690.55 C
216 431.16 567 485.15 C
252 449.15 540 467.15 R
1 H
2 Z
0 X
0 K
N
396 465.36 396 449.16 2 L
N
468 467.15 468 447.36 2 L
N
5 7 Q
(0) 536.4 459.96 T
(15) 469.8 459.96 T
488.53 476.45 477 479.76 488.53 483.06 488.53 479.76 4 Y
V
504 467.15 504 479.76 488.53 479.76 3 L
N
(Interrupt Group Mask) 409.17 478.26 T
63 144 567 690.55 C
9 72 603 720 C
FMENDPAGE
%%EndPage: "1" 4
%%Page: "2" 4
612 792 0 FMBEGINPAGE
1 9 Q
0 X
0 K
(2) 45 109.2 T
0 F
(:) 45 679.44 T
45 675 549 675 2 L
0.3 H
2 Z
N
1 12 Q
(Kernel Interface for Group Interrupt Management) 45 404.67 T
1 10 Q
(Binding) 180 373.01 T
2 F
(The kernel interrupt handler uses the) 180 349.01 T
6 F
(level) 329.33 349.01 T
2 F
(to select a speci\336c interrupt handler) 350.7 349.01 T
(. The binding) 492.54 349.01 T
(between levels and interrupt handlers may be speci\336ed with the following function:) 180 337.01 T
5 8 Q
(int) 180 320.34 T
(evintr_connect \050) 180 310.34 T
(evreg_t *) 225 300.34 T
(regaddr) 261 300.34 T
(,) 288.11 300.34 T
(int) 225 290.34 T
(level,) 243 290.34 T
(int) 225 280.34 T
(spl,) 243 280.34 T
(int) 225 270.34 T
(dest,) 243 270.34 T
(EvIntrFunc*) 225 260.34 T
( func,) 266.77 260.34 T
(void) 225 250.34 T
(*arg) 243 250.34 T
(\051;) 225 240.34 T
2 10 Q
(Parameter) 180 217.01 T
1 8 Q
(regaddr) 223.02 217.01 T
2 10 Q
( is used to specify the address of a device register dedicated to hold the) 252.78 217.01 T
-0.19 (pattern used to generate an interrupt. The format for this register is shown in Figure 1. If this) 180 205.01 P
(parameter is NULL, the binding function assumes that the device driver will initialize this) 180 193.01 T
(register) 180 181.01 T
(.) 209.42 181.01 T
45 144 549 639 C
198 455.67 549 639 C
230.4 549 464.4 549 2 L
1 H
2 Z
0 X
0 K
N
315 477 378 531 R
N
360 567 432 622.8 R
N
347.4 531 347.4 549 2 L
0.5 H
N
264.6 567 336.6 622.8 R
1 H
N
302.4 567 302.4 547.2 2 L
0.5 H
N
396 567 396 549 2 L
N
304.7 564 306 576 311.26 565.13 307.98 564.57 4 Y
2 X
V
1 H
207 270 18 25.2 324 576 A
349.49 535.67 352.8 547.2 356.11 535.67 352.8 535.67 4 Y
V
352.8 525.6 352.8 535.67 2 L
N
307.8 588.6 331.2 594 R
0 X
N
403.2 588.6 426.6 594 R
N
399.57 560.39 399.59 572.4 405.94 562.21 402.75 561.3 4 Y
2 X
V
211 270 21.6 21.6 421.2 572.4 A
379.2 549.5 367.2 550.8 378.06 556.06 378.63 552.78 4 Y
V
297 360 25.2 18 367.2 568.8 A
287.4 549.5 275.4 550.8 286.27 556.06 286.83 552.78 4 Y
V
297 360 25.2 18 275.4 568.8 A
275.4 574.2 298.8 579.6 R
0 X
N
365.4 574.2 388.8 579.6 R
N
5 7 Q
(Group) 405 595.8 T
(Group) 309.6 596.11 T
(InterCpu) 367.2 588.6 T
(Intr) 367.2 581.6 T
(InterCpu) 275.4 588.91 T
(Intr) 275.4 581.91 T
(Processor) 284.4 610.2 T
(Processor) 379.05 610.51 T
(IO Devices) 334.8 509.4 T
(Intr) 414 556.2 T
(intr) 318.6 558 T
(Intr to another) 342 559.8 T
(cpu/group) 342 552.8 T
(Intr to another) 244.8 560.11 T
(cpu/group) 244.8 553.11 T
(Intr to cpu/group) 361.8 540 T
45 144 549 639 C
9 72 603 720 C
FMENDPAGE
%%EndPage: "2" 5
%%Page: "3" 5
612 792 0 FMBEGINPAGE
0 9 Q
0 X
0 K
(Kernel Interface for Group Interrupt Management) 367.55 679.44 T
1 F
(3) 562 109.2 T
63 675 567 675 2 L
0.3 H
2 Z
N
2 10 Q
-0.41 (Parameter) 198 632.33 P
1 8 Q
-0.36 (level) 240.61 632.33 P
2 10 Q
-0.41 (corresponds to the interrupt level being bound, parameter) 260.25 632.33 P
1 8 Q
-0.36 (spl) 488.78 632.33 P
2 10 Q
-0.41 ( speci\336es the spl) 500.33 632.33 P
(level the kernel should use to service this interrupt.) 198 620.33 T
(Parameter) 198 596.33 T
1 8 Q
(dest) 241.02 596.33 T
2 10 Q
( speci\336es the destination for the interrupt, a cpu, a group or a broadcast.) 257.45 596.33 T
-0.26 (Parameter) 198 584.33 P
1 8 Q
-0.23 (func) 240.75 584.33 P
2 10 Q
-0.26 ( de\336nes the function to be called to service this interrupt, and parameter) 257.63 584.33 P
1 8 Q
-0.23 (arg) 543.42 584.33 P
2 10 Q
-0.26 ( is) 555.86 584.33 P
(an ar) 198 572.33 T
(gument passed when this function is called.) 217.52 572.33 T
(This binding has to be done for either normal or group interrupts. A processor receiving an) 198 548.33 T
(interrupt cannot tell whether the interrupt was directed only to itself, or to a group of them.) 198 536.33 T
1 F
(Group Interrupts) 198 506.33 T
2 F
(Group interrupts allow devices or processors to send an interrupt to several destinations) 198 482.33 T
(simultaneously) 198 470.33 T
(. They are extensively used by the real-time facilities provided by Irix.) 257.88 470.33 T
(Device drivers may also use this facility) 198 446.33 T
(. However) 357.79 446.33 T
(, in order to avoid con\337icts with the ker-) 399.02 446.33 T
(nel, they have to make strict use of the following kernel interface:) 198 434.33 T
(De\336nition \336le:) 198 410.33 T
5 8 Q
(#include <sys/EVEREST/groupintr) 198 393.67 T
(.h>) 319.54 393.67 T
2 10 Q
(Interrupt Group Handle:) 198 370.33 T
5 8 Q
(typedef struct intrgroup {) 198 353.67 T
(cpumask_t cpubv;) 225 343.67 T
( int groupid;) 225 333.67 T
(lock_t lock;) 225 323.67 T
(} intrgroup_t;) 198 313.67 T
2 10 Q
(Allocation of an interrupt group:) 198 290.33 T
5 8 Q
(intrgroup_t* intrgroup_alloc\050void\051;) 198 273.67 T
2 10 Q
(Addition of a processor to a group:) 198 250.33 T
5 8 Q
(void intrgroup_join\050intrgroup_t* intrgroup, cpuid_t cpuid\051;) 198 233.67 T
2 10 Q
-0.08 (where) 198 210.33 P
1 8 Q
-0.07 ( intrgroup) 222.42 210.33 P
2 10 Q
-0.08 ( is the handle returned by) 260.1 210.33 P
1 8 Q
-0.07 (intrgroup_alloc) 363.46 210.33 P
2 10 Q
-0.08 (, and) 421.66 210.33 P
1 8 Q
-0.07 (cpuid) 443.43 210.33 P
2 10 Q
-0.08 ( is the actual cpu number) 464.76 210.33 P
([0..35].) 198 198.33 T
(Removal of a processor from a group:) 198 174.33 T
5 8 Q
(void intrgroup_unjoin\050intrgroup_t* intrgroup, cpuid_t cpuid\051;) 198 157.67 T
FMENDPAGE
%%EndPage: "3" 6
%%Page: "4" 6
612 792 0 FMBEGINPAGE
1 9 Q
0 X
0 K
(4) 45 109.2 T
0 F
(:) 45 679.44 T
45 675 549 675 2 L
0.3 H
2 Z
N
2 10 Q
(Deallocation of a group:) 180 610.33 T
5 8 Q
(void intrgroup_free\050intrgroup_t* intrgroup\051;) 180 593.67 T
2 10 Q
(The implementation of intr) 180 560.33 T
(group_t may change; device driver writers should not access the) 287.81 560.33 T
(structure \336elds directly) 180 548.33 T
(. T) 271.51 548.33 T
(wo macros are provided for this purpose:) 281.91 548.33 T
5 8 Q
(intrgroup_get_cpubv\050intrgroup\051) 180 531.67 T
(intrgroup_get_groupid\050intrgroup\051) 180 521.67 T
2 10 Q
(The \336eld) 180 498.33 T
1 8 Q
(groupid) 218.31 498.33 T
2 10 Q
(is an integer between 0 and 15. T) 250.29 498.33 T
(o transform this groupid into a destina-) 382.27 498.33 T
(tion, device driver writers should use the following macro:) 180 486.33 T
5 8 Q
(EVINTR_GROUPDEST\050intrgroup_get_groupid\050intrgroup\051\051) 180 469.67 T
FMENDPAGE
%%EndPage: "4" 7
%%Trailer
%%BoundingBox: 0 0 612 792
%%Pages: 6 1
%%DocumentFonts: Palatino-Roman
%%+ Helvetica-Bold
%%+ Times-Roman
%%+ Courier-Bold
%%+ Palatino-Italic
%%+ Helvetica
%%+ Times-Italic