1510 lines
34 KiB
PostScript
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
|