.nr :a 0 1
.nr :b 0
.nr :c 0
.nr :d 0
.nr :e 0
.nr :f 0
.nr :g 0 1
.nr :h 1
.nr :u 0
.nr ;p 1
.nr !0 0
.nr !1 0
.nr !2 0
.nr !3 0
.nr !N 0  
.nr ;F 0
.nr !V 0
.nr !Y 0
.nr !6 0
.nr !8 0
.nr !9 0
.nr !M 0
.ds F \v'-.4m'\s-3\\n+(:p\s0\v'.4m'
.ds HF 2 2 2 2 2 2 2
.ds Rf \v'-.4m'\s-3[\\n+(:R]\s0\v'.4m'
.nr Au 1
.nr Cp 0
.nr Cl 2
.nr Ds 1v
.nr Ec 0 1
.nr Eq 0
.nr Ex 0 1
.nr De 0
.nr Df 5
.nr Fg 0 1
.nr Fs 1
.nr H1 0 1
.nr H2 0 1
.nr H3 0 1
.nr H4 0 1
.nr H5 0 1
.nr H6 0 1
.nr H7 0 1
.nr Hb 2
.nr Hi 1
.nr Hs 2
.nr Hu 2
.nr Hy 0
.nr Le 0
.nr Lf 1
.nr Li 5
.nr Ls 6
.nr Lt 1
.nr Lx 1
.nr Np 0
.nr Oc 0
.nr Of 0
.nr !4 0 1
.af !4 01
.nr Pi 3
.nr Ps 1
.nr Pt 0
.nr Pv 0
.nr Rf 0
.nr Si 3
.nr Tb 0 1
.de B
.ie \\n(.$ .nr  ;G \\n(.f
.el.ft 3
.if \\n(.$ .if  !\\n(.$-2 \&\f3\\$1\fP\\$2
.if \\n(.$-2 \{.ds  }i
.if \\n(.f2 .ds  }i \^
.ds }I \&\f3\\$1\fP\\$2\\*(}i
'br\}
.if \\n(.$-2 .if  !\\n(.$-4 \\*(}I\f3\\$3\fP\\$4
.if \\n(.$-4 .if  !\\n(.$-6 \\*(}I\f3\\$3\fP\\$4\\*(}i\f3\\$5\fP\\$6
.if \\n(.$ .ft \\n(;G
..
.de I
.ie \\n(.$ .nr  ;G \\n(.f
.el.ft 2
.if \\n(.$ .if  !\\n(.$-1 \&\f2\\$1
.if \\n(.$-1 \{.ds  }i \^
.if \\n(.f2 .ds  }i
.ds }I \&
.if \w\\$1 .ds  }I \&\f2\\$1\fP\\*(}i
'br\}
.if \\n(.$-1 .if  !\\n(.$-3 \\*(}I\\$2\f2\\$3
.if \\n(.$-3 .if  !\\n(.$-5 \\*(}I\\$2\f2\\$3\fP\\*(}i\\$4\f2\\$5
.if \\n(.$-5 \\*(}I\\$2\f2\\$3\fP\\*(}i\\$4\f2\\$5\fP\\*(}i\\$6
.if \\n(.$ .ft \\n(;G
..
.de R
.ft1
.ul0
..
.de  XS
.if  !\\n(1T .BG
.ds  XL \\n(PN
.if  \\n(.$ .ds  XL \\$1
.nr  SJ \\n(.j
.nr  PF \\n(.f
.nr  PX \\n(.s
.nr  SL \\n(.l
.ls  1
.br
.da XT
.if  \\n(.$-1 \{\
.	nr XI 1
.	in \\$2n
.\}
.ft 1
.ps  \\n(PS
.ll  \\n(LLu-8n
.na
.sp \\n(PDu
..
.	\" XA - add index entry
.de  XA
.if  !\\*(XLno \\a\\t\\*(XL
.if  \\n(.$ .ds  XL \\$1
.sp \\n(PDu
.if  \\n(.$-1 \{\
.	nr XI 1
.	in \\$2n
.\}
..
.	\" XE - end index entry
.de  XE
.if  !\\*(XLno \\a\\t\\*(XL
.br
.da
.ls 
.ad \\n(SJ
.ft \\n(PF
.ps  \\n(PX
.ll  \\n(SLu
.if  \\n(XI \{\
.	nr XI 0
.	in 0
.\}
..
.	\" PX - print index (table of contents)
.de  PX
.if  \\n(VS>=40 .vs  \\n(VSu
.if  \\n(VS<=39 .vs  \\n(VSp
.ll  \\n(LLu
.lt \\n(LTu
.ta  \\n(LLu-5n \\n(LLuR
.in   0
.nf
.rs
.if  !\\$1no \{\
.	sp .5i
.	tl ''\f3\s+2Table of Contents\s-2\f1''
.	sp .5i
.\}
.XT
..
.de TC
.bp 1
.af  PN i
.ds  RF \\$1 - \\\\n(PN
.ps  14
.ce
.B CONTENTS
.sp 2
.LP
.ps  14
\fBChapter \\$1\fP - \\$2
.ps  11
.sp 2
.PX no
..
.de  MT
.bp 1
.ev 1
.bp 1
.af  PN i
.ps  14
.ev
.ds  RF \\$1 - \\\\n(PN
.ps  14
.ce
.B CONTENTS
.sp 2
.LP
.ps  14
\fBChapter \\$1\fP - \\$2
.ps  11
.sp 2
.PX no
..
.de NH
.if \\n(:F .)D "H:missing FE"
.if \\n(:y .)D "H:missing DE"
.if !\\n(.$ .)D "H:missing arg"
.nr ;0 0
.if \\$1-7 .nr  ;0 1
.if \w\\$1-\w'0'u .nr  ;0 1
.if \\n(;0 .)D "H:bad arg:\\$1"
.LC 0
.br
.)R
.nr ;1 0\\$1
.if !0\\$1 .nr  ;1 \\n(Hu 
.if !\\n(;1 .)D "H:bad arg:\\$1"
.if 2-\\n(;1 .nr  H2 0 1
.if 3-\\n(;1 .nr  H3 0 1
.if 4-\\n(;1 .nr  H4 0 1
.if 5-\\n(;1 .nr  H5 0 1
.if 6-\\n(;1 .nr  H6 0 1
.if 7-\\n(;1 .nr  H7 0 1
.if 2-\\n(;1 \{.if  \\n(:S .)w
.if \\n(:C .nr  :p 0 1 \}
.SP .5
.nr :u 0
.if \\n(;1-1 .nr  H\\n(;1 +1 
.if !\\n(;1-1 \{.nr  :u 1 
.SP 1 \}
.if \\n(;1-1 .if  (\\n(Ej+1-\\n(;1)&(\\n(;L\{\
.bp
.nr ;L 0\}
.if \\n(;1-1 .if  (\\n(Ej+1-\\n(;1)&(\\n(nl-\\n(:J) \{.if  \\n(;C .nr  ;C 2
.bp\}
.if !\\n(;1-1 \{.if  (\\n(Ej+\\n(:S)&(\\n(nl-\\n(:J) \{.if  \\n(;C .nr  ;C 2
.bp\}
.if !\\n(:u-1 .nr  H1 +1 
.if (\\n(:u=1)&(\\n(:S=1) .nr  P 1 \}
.nr :u 0
.ds }0 \\n(H1.
.if 0\\$1-1 .as }0 \\n(H2
.if 0\\$1-2 .as }0 .\\n(H3
.if 0\\$1-3 .as }0 .\\n(H4
.if 0\\$1-4 .as }0 .\\n(H5
.if 0\\$1-5 .as }0 .\\n(H6
.if 0\\$1-6 .as }0 .\\n(H7
.ds  SN \\n(H1.
.if 0\\$1-1 .as SN \\n(H2
.if 0\\$1-2 .as SN .\\n(H3
.if 0\\$1-3 .as SN .\\n(H4
.if 0\\$1-4 .as SN .\\n(H5
.if 0\\$1-5 .as SN .\\n(H6
.if 0\\$1-6 .as SN .\\n(H7
\\*(SN
.if \\n(Ht \{.)I \\n(;1 \\n(H1 \\n(H2 \\n(H3 \\n(H4 \\n(H5 \\n(H6 \\n(H7
.ds }0 \\*(}3.
'br\}
.as}0 \ \ 
.if !0\\$1 .ds  }0 
.nr ;0 0
.if !\\n(;1-\\n(Hb .nr  ;0 1
.if !\\n(;1-\\n(Hs .nr  ;0 2
.ds }2
.if !\\n(;0 .if  \w\\$2 .ds  }2 "  
.nr ;3 2v
.HX \\n(;1 0\\$1 "\\$2\\$3"
.if \\$1<3 .nr  !5 0 1
.af !5 01
.if (\\$1=1)&(\\n(Np=1) .nr  !4 0
.di>A
\&\\*(}0\\$2\\$3\\*(}2
.br
.di
.rm>A
.if \\n(;0-1 .nr  ;3 +.5v
.ne\\n(;3u+\\n(dnu+.5p-1v
.HY \\n(;1 0\\$1 "\\$2\\$3"
.if \\n(;0 .na
.)I \\n(;1 \\*(HF
.nr ;3 1
.nr ;3 \\*(}3
.ft\\n(;3
.nr :I \\n(.s
.)I \\n(;1 \\*(HP
.if ((\\*(}3=0):(\w\\*(}3=0))&(\\n(;3=3)&(\\n(;0>0) .ps  -1
.if !\\*(}3 .if  !\\*(}30 .ps  \\*(}3
.nr ;2 \w\\*(}0
.if \\n(;0 \{.in  +\\n(;2u
.ti-\\n(;2u \}
.nr ;2 \\n(.i
.if !\\n(;1-\\n(Hc .if  \\n(;0 .ce
\\*(}0\&\c
.if \\n(;0 \&\\$2\\$3
.if !\\n(;0 \&\\$2\\$3\\*(}2\&\c
.ft1
.ps \\n(:Ip
.if \\n(;0 'in
.if !\\n(;1-\\n(Cl .if  \w\\$2 .)E \\$1 "\\$2"
.SA
.if \\n(;0 .br
.if \\n(;0-1 .SP .5
.if \\n(;0*\\n(Hi*\\n(Pt .if  !\\n(Hi-1+\\n(Pt-1 .ti+\\n(Pin
.if 0\\$1*\\n(;0 .if  \\n(Hi-1 .ti\\n(;2u
.nr :I 1
.nr !D \\n(nl
.nr !Z \\n(.k
.if (\\$1=1)&(\\nN=5) \{\
.nr Fg 0
.nr Tb 0
.nr Ec 0
.nr Ex 0 \}
.HZ \\n(;1 0\\$1 "\\$2\\$3"
..
.de HH
.af H1 \\$1 1
.af H2 \\$2 1
.af H3 \\$3 1
.af H4 \\$4 1
.af H5 \\$5 1
.af H6 \\$6 1
.af H7 \\$7 1
..
.de HU
.if !\\n(.$ .)D "HU:missing arg"
.H 0 "\\$1" "\\$2"
..
.de LC
.if \\n(:g-0\\$1 .)B
.if \\n(:g-0\\$1 .LC 0\\$1
..
.de S
.if !\\n(:Q .nr  :Q \\nS
.if !\\n(.$ .nr  ;0 \\n(:Q
.if \\n(.$ .if  !\w\\$1 \{\
.nr ;J 2
.nr ;0 \\n(:P \}
.if \w\\$1 \{\
.ie \\$1D \{\
.nr ;J 1
.nr ;0 \\nS \}
.el\{\
.ie \\$1C \{\
.nr ;J 2
.nr ;0 \\n(:P \}
.el\{\
.ie \\$1P \{\
.nr ;J 3
.nr ;0 \\n(:Q \}
.el\{.if  !\\n(;J \{\
.nr ;0 \\n(:P
.nr ;0 \\$1 \}\}\}\}\}
.if 0\\$1-99 .nr  ;0 \\nS
.if !\\n(;0 .)D "S:bad arg \\$1"
.nr :Q \\n(:P
.nr :P \\n(;0
.ps \\n(:Pp
.nr ;J 0
.if !\\n(!Q .nr  !Q \\nS+2
.if !\\n(.$-1 \{\
.ie \\n(.$ \{\
.nr ;K 1
.nr ;7 \\n(.s+2 \}
.el\{\
.nr ;K 3
.nr ;7 \\n(!Q \}\}
.if \\n(.$-1 .if  !\w\\$2 \{\
.nr ;K 2
.nr ;7 \\n(!P \}
.if \w\\$2 \{\
.ie \\$2D \{\
.nr ;K 1
.nr ;7 \\n(.s+2 \}
.el\{\
.ie \\$2C \{\
.nr ;K 2
.nr ;7 \\n(!P \}
.el\{\
.ie \\$2P \{\
.nr ;K 3
.nr ;7 \\n(!Q \}
.el\{.if  !\\n(;K \{\
.nr ;7 \\n(!P
.nr ;7 \\$2 \}\}\}\}\}
.if 0\\$2-99 .nr  ;7 \\n(.s+2
.if !\\n(;7 .)D "S:bad arg \\$2"
.nr !Q \\n(!P
.nr !P \\n(;7
.vs \\n(!Pp
.nr ;K 0
..
.de SA
.if \\n(.$ \{.if  \\$1-1 .)D "SA:bad arg:\\$1"
.nr :h 0\\$1 \}
'na
.if \\n(:h 'ad
..
.de SP
.br
.el.ie  !'\\n(.z'' .)S \\$1
.el\{.rr ;D ;E
.nr ;4 1v
.if \\n(.$ .nr  ;4 \\$1v
.if !(\\n(nl=\\n(:N) .nr  :A 0
.nr ;4 -\\n(:Au
.if \\n(;4 \{.sp\\n(;4u
.nr :A +\\n(;4u \}
.nr :N \\n(nl \}
..
.de )S
.br
.if !'\\n(.z'\\*(}D' .rr ;D ;E
.nr ;4 1v
.if \\n(.$ .nr  ;4 \\$1v
.if !(\\n(.d=\\n(;D) .nr  ;E 0
.nr ;4 -\\n(;Eu
.if \\n(;4 \{.sp\\n(;4u
.nr ;E +\\n(;4u \}
.nr ;D \\n(.d
.ds }D \\n(.z
..
.de )B
.br
.nr :g -1
.)C nr :a ]a \\*(]a
.[b ]b \\*(]b
.)C nr :b ]b \\*(]b
'in\\n(:bu
'ti\\n(:bu
.)C nr :c ]c \\*(]c
.)C nr :d ]d \\*(]d
.)C nr :e ]e \\*(]e
.)C nr :f ]f \\*(]f
.)C ds ]g ]h \\*(]h
.af :a 1
.if \\n(:e .af  :a \\*(]g
..
.de [b
.ds \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7
..
.de )C
.\\$1 \\$2 \\$4
.ds \\$3 \\$5 \\$6 \\$7 \\$8 \\$9
..
.de )D
'di
'di
.nr :D 0
.fl
********************
.br
ERROR:(\\n(.F)input line \\n(.c:\\$1
.br
********************
.tm********************
.tmERROR:(\\n(.F)input line \\n(.c:\\$1
.tm********************
.if !\\nD .ab Processing has been terminated.
..
.de )I
.nr ;9 0\\$1+1
.ds }3 \\$\\n(;9
.rr;9
..
.de )E
.ds }3
.if \\n(:S .ds  }3 \\n(H1
.am>C
.)T \\n(;1 \\$1 "\\*(}0" "\\$2" \\nP \\*(}3
\\..
..
.de )T
.nr ;0 \w\\$5
.if \w\\$6 .nr  ;0 +\w'-'u+\w\\$6u
.if \\n(;0-\\n(:a .nr  :a \\n(;0
.)I \\$1 \\n(H1 \\n(H2 \\n(H3 \\n(H4 \\n(H5 \\n(H6 \\n(H7
.if \w\\$3-\\*(}3 .nr  H\\$1 \w\\$3
..
.de )U
.if !0\\$1-\\n(:b .sp\\n(:cu*.5v
.)I \\$1 \\*(}0
.nr ;0 \\*(}3
.)I \\$1 \\*(Ci
.nr ;1 \\*(}3
.)I \\$1 \\*(}2
.nr ;2 \\*(}3
.ds }3 \\$5
.if \\n(.$-5 .ds  }3 \\$6\(hy\\$5
.nr :e \\n(:au-\w\\*(}3u+2n
.ds }3 \h\\n(:eu\\*(}3
.ds }y
.nr ;0 -\w\\$3
.if \\n(;0 .as }y \h\\n(;0u
.if 2-0\\$1 .as }y "\\$3
.if 0\\$1-1 .ds  }y "\\$3\\*(}y
.if !0\\$2 .ds  }y
.ll \\nWu-\\n(:au-3n
.in  \\n(;2u
.if !0\\$2 .in  \\n(;1u
.ti\\n(;1u
.fi
.di>A
\!.cs 3 48
.if !0\\$1-\\n(:d .if  !\\n(:f \\*(}y\\$4\\\\f3\\a\\\\fP\\*(}3
.if !0\\$1-\\n(:d .if  \\n(:f \\*(}y\\$4\\t\\*(}3
.if 0\\$1-\\n(:d \\*(}y\\$4\\*(}3
.br
\!.br
\!.cs 3
.di
.br
.ll \\nWu
.ne\\n(dnu+.5p-1v
.ta \\nWu-\\n(:au-2n
.nf
.in  0
.na
.>A
..
.de )b
'ev2
.nf
.?1
.?2
.?3
.?4
.br
.)R
.af ;P \\gP
.af P 1
.nr ;P \\nP
.af P \\g(;P
.af ;P 1
.ie !\\n(;P%2 .tl \\*(}f
.el.tl \\*(}p
.ie \\n(;P=1 \{\
.ie \\nN=1 .tl \\*(}t
.el.tl \\*(}b \}
.el.tl \\*(}b
.if \\nC .tl \\*(]C
.nf
.?5
.)R
'ev
..
.de >W
.if \\n(;C \{\
.ev1
.ll \\n(:Lu
.lt\\n(:Lu
.ev
.nr W \\n(:Lu
.nr ;W 1 \}
..
.de >N
.if (\\n(;l>0)&(\\n(;C=0) \{\
.ev1
.ll \\n(;lu
.lt\\n(;lu
.ev
.nr W \\n(;lu
.nr ;W 2 \}
..
.de >R
.ie \\n(;W=1 .nr  W \\n(;lu
.el.if  \\n(;W=2 .nr  W \\n(:Lu
.if \\n(;W \{\
.ev1
.ll \\nWu
.lt\\nWu
.ev
.nr ;W 0 \}
..
.de )Q
.ch )Q 200v
.rs
'sp70
..
.de BS
.(B
..
.de BE
.(E 4
..
.de (B
.ev1
.)R
.di>K
..
.de (E
.br
.di
.)R
.ev
.ie (\\n(dn=0)&(0\\$2=0) \{\
.nr ?\\$1 0
.rm>K ?\\$1
'br\}
.el\{\
.ie 0\\$2>0 .nr  ?\\$1 0\\$2
.el.nr  ?\\$1 \\n(dn \}
.nr ?0 \\n(:Uu
.nr :U \\n(?1+\\n(?2+\\n(?3+\\n(?4+\\n(?5
.if (\\n(:Uu+\\n(:Mu)>(\\n(.pu-\\n(nlu-.5v) .SK
.rn>K ?\\$1
.nr :o +(\\n(:Uu-\\n(?0u)
.ch )n -\\n(:ou
.ch )f -\\n(:ou
.nr :m \\n(:Mu+\\n(:Uu
.ch )b -(\\n(:ru+\\n(:Uu)
..
.de )x
'nr:v \\n(:z
')y
'if\\n(:v=\\n(:z \{\
'nr;d 1
\&\c
'SP \\n(.tu+1v
'nr;d 0
')z  \}
..
.de )w
'if\\n(:z \{\
')x
')w \}
..
.de )t
.br
.nr !L \\n(.L
.ls 1
.)r
.ti\\n(.iu
.nf
.if \\n(:t>1 .in   -\\n(;iu  
.rs
.nr ;d 1
.>0
.)R
.nr ;d 0
.ie \\n(:I>1 \{\
.if \\n(nl>\\n(:J .nr  :I 0 \}  
.el.nr  :I 0
.ls \\n(!L
.in  \\n(;iu
.if !\\n(;q .nf
.if \\n(Ds .SP .5
.nr :J \\n(nl
..
.de )r
.if \\n(Ds  .SP .5
.if (\\n(:0>=\\n(.t)&((\\n(:0<(\\n(.p-\\n(;r-\\n(:m)):\
(\\n(nl>(\\n(.p-\\n(;r-\\n(:o/2u+\\n(;r))) \{\
.if \\n(;e \&\c
.ne\\n(.tu+1v
.if \\n(:I<2 .)r \}  
..
.de )R
'fi
'na
.if \\n(:h 'ad
'nh
'if\\n(Hy 'hy 14
'in0
'ti0
'ps\\n(:Pp
'vs\\n(!Pp
..
.ig
.de )k
.po0
.lt7.5i
.ps 10
.vs 10p
.ft1
.tl'--''--'
.ft
.vs 
.po
.ps 
.lt
..
.       \" Macro for headers for Volume I of Khoros Manual
.de  J1
.ds  CF Release: 1.0
.ds  CH
.ds  LF KHOROS
.ds  LH \fIVolume I  -  User's Manual\fP
.ds  RF \\$1 - %
.ds  RH Chapter \\$1  -  \\$2  
.ds  HF 2 3 3 3
.ds  HP 16 14 14 12
.HH A 1 1 1
.nr  FM 1.0i
.nr  HM 1.0i
.nr  LL 6i
.nr  PO 0.85i
.nr  PS 11
.nr  VS 13
..
.       \" Macro for headers for Volume II of Khoros Manual
.de  J2
.ds  CF Release: 1.0
.ds  CH
.ds  LF KHOROS
.ds  LH \fIVolume II  -  Programmer's Manual\fP
.ds  RF \\$1 - %
.ds  RH Chapter \\$1  -  \\$2
.ds  HF 2 3 3 3
.ds  HP 16 14 14 12
.HH A 1 1 1
.nr  FM 1.0i
.nr  HM 1.0i
.nr  LL 6i
.nr  PO 0.85i
.nr  PS 11
.nr  VS 13
..
.       \" Macro for headers for Volume III of Khoros Manual
.de  J3
.ds  CF Release: 1.0
.ds  CH
.ds  LF KHOROS
.ds  LH \fIVolume III  -  Reference Manual\fP
.ds  RF \\$1 - %
.ds  RH Chapter \\$1  -  \\$2
.ds  HF 2 3 3 3
.ds  HP 16 14 14 12
.HH A 1 1 1
.nr  FM 1.0i
.nr  HM 1.0i
.nr  LL 6i
.nr  PO 0.85i
.nr  PS 11
.nr  VS 13
..
.       \" Macro for headers for Changes Document
.de  J5
.ds  CF Release: 1.0
.ds  CH
.ds  LF KHOROS
.ds  LH \fIAppendix C - Khoros Changes Document\fP
.ds  RH Changes
.ds  HF 2 3 3 3
.ds  HP 16 14 14 12
.HH A 1 1 1
.nr  FM 1.0i
.nr  HM 1.0i
.nr  LL 6i
.nr  PO 0.85i
.nr  PS 11
.nr  VS 13
..
.       \" fIAppendix B header and footer
.de  J7
.ds  CF Release: 1.0
.ds  CH
.ds  LF KHOROS
.ds  LH \fIAppendix B - Khoros Imake Document\fP
.ds  RH Imake
.ds  HF 2 3 3 3
.ds  HP 16 14 14 12
.HH A 1 1 1
.nr  FM 1.0i
.nr  HM 1.0i
.nr  LL 6i
.nr  PO 0.85i
.nr  PS 11
.nr  VS 13
..
.       \" Macro for headers for Glossary Document
.de  J6
.ds  CF Release: 1.0
.ds  CH
.ds  LF KHOROS
.ds  LH \fIAppendix A - Khoros Glossary\fP
.ds  RH Glossary
.ds  HF 2 3 3 3
.ds  HP 16 14 14 12
.HH A 1 1 1
.nr  FM 1.0i
.nr  HM 1.0i
.nr  LL 6i
.nr  PO 0.85i
.nr  PS 11
.nr  VS 13
..
.       \" Macro for chapter title page for Volume I of Khoros Manual
.de  K1
.RP
.KS
.B
.ps  18
.sp 0.5i
.ce
\fIVolume I\fP
.sp 2
.ce
\fIKhoros User's Manual\fP
.sp 6
.ce
Chapter \\$1
.sp 6
.ce
\s22\\$2\s0
.sp 4
.ce
\s16\\$3\s0
.sp 6
.ce
\s16Primary Author(s):\s0
.sp
.ce
\s16 \fI\\$4\fP\s0
.ps  11
.R
.sp 2i
.ce
Copyright \(co\ 1992 University of New Mexico.  All rights reserved.
.sp 2
.ce
Printed: \*(MO \n(dy, 19\n(yr
.KE
.P1
\ 
.bp 1
..
.       \" Macro for chapter title page for Volume II of Khoros Manual
.de  K2
.RP
.KS
.B
.ps  18
.sp 0.5i
.ce
\fIVolume II\fP
.sp 2
.ce
\fIKhoros Programmer's Manual\fP
.sp 6
.ce
Chapter \\$1
.sp 6
.ce
\s22\\$2\s0
.sp 4
.ce
\s16\\$3\s0
.sp 6
.ce
\s16Primary Author(s):\s0
.sp
.ce
\s16 \fI\\$4\fP\s0
.ps  11
.R
.sp 2i
.ce
Copyright \(co\ 1992 University of New Mexico.  All rights reserved.
.sp 2
.ce
Printed: \*(MO \n(dy, 19\n(yr
.KE
.P1
\ 
.bp 1
..
.       \" Macro for Chapter 8 title page for Volume II of Khoros Manual
.de  K4
.RP
.KS
.B
.ps  18
.sp 0.5i
.ce
\fIVolume II\fP
.sp 2
.ce
\fIKhoros Programmer's Manual\fP
.sp 6
.ce
The \fI\\$1\fP Library
.sp 4
.ce
\s16\\$2\s0
.sp 6
.ce
\s16Primary Author(s):\s0
.sp
.ce
\s16\fI\\$3\fP\s0
.ps  11
.R
.sp 2i
.ce
Copyright \(co\ 1992 University of New Mexico.  All rights reserved.
.sp 2
.ce
Printed: \*(MO \n(dy, 19\n(yr
.KE
.P1
\ 
.bp 1
..
.       \" Macro for chapter title page for Volume III of Khoros Manual
.de  K3
.RP
.KS
.B
.ps  18
.sp 0.5i
.ce
\fIVolume III\fP
.sp 2
.ce
\fIKhoros Reference Manual\fP
.sp 2i
.ce
Chapter \\$1
.sp 6
.ce
\s22\\$2\s0
.sp 4
.ce
\s16\\$3\s0
.ps  11
.R
.sp 2i
.ce
Copyright \(co\ 1992 University of New Mexico.  All rights reserved.
.sp 2
.ce
Printed: \*(MO \n(dy, 19\n(yr
.KE
.P1
\ 
.bp 1
..
.       \" Macro for title page of Changes Document
.de  K5
.RP
.KS
.B
.ps  18
.sp 0.5i
.ce
\fBAPPENDIX  B\fP
.sp 2
.ce 2
\s22Changes to the Khoros Programs & Libraries\s0
.sp 2
\s22since the Beta Release of Khoros 0.9\s0
.sp 2i
.ce
\fIKhoros Changes Document\fP
.sp 1.6i
.ce
\s16Compiled By:\s0
.sp
.ce
\s16 \fI\\$1\fP\s0
.ps  11
.R
.sp 2i
.ce
Copyright \(co\ 1992 University of New Mexico.  All rights reserved.
.sp 2
.ce
Printed: \*(MO \n(dy, 19\n(yr
.KE
.P1
\ 
.bp 1
..
.       \" Macro for glossary of Khoros Manual
.de  K6
.RP
.KS
.B
.ps  18
.sp 0.5i
.ce
\fBAPPENDIX  A\fP
.sp 2
.ce
\fBGLOSSARY\fP
.sp 2i
.ce
\fIGlossary for Khoros System\fP
.sp 2i
.ce
\s16Primary Author(s):\s0
.sp
.ce
\s16 \fI\\$1\fP\s0
.ps  11
.R
.sp 2i
.ce
Copyright \(co\ 1992 University of New Mexico.  All rights reserved.
.sp 2
.ce
Printed: \*(MO \n(dy, 19\n(yr
.KE
.P1
\ 
.bp 1
..
.       \" appendix C imake
.de  K7
.RP
.KS
.B
.ps  18
.sp 0.5i
.ce
\fBAPPENDIX  B\fP
.sp 2
.ce 2
\s22Khoros \fBImake\fP Symbols and Variables\s0
.sp 2i
.ce
\fIKhoros Imake Document\fP
.sp 1.6i
.ce
\s16Compiled By:\s0
.sp
.ce
\s16 \fI\\$1\fP\s0
.ps  11
.R
.sp 2i
.ce
Copyright \(co\ 1992 University of New Mexico.  All rights reserved.
.sp 2
.ce
Printed: \*(MO \n(dy, 19\n(yr
.KE
.P1
\ 
.bp 1
..
.       \" Macro for top of first page (of chapter) of Khoros Manual
.de  K0
.KS
.sp
.KE
.ce
.B
\s18\\$1\s0
.R
.sp 3
..
.       \" Macro for chapter 1 VIFF for Volume II of Khoros Manual
.de  K8
.RP
.KS
.B
.ps  18
.sp 0.5i
.ce
\fIVolume II\fP
.sp 2
.ce
\fIKhoros Programmer's Manual\fP
.sp 6
.ce
Chapter \\$1
.sp 6
.ce
\s22\\$2\s0
.sp 4
.ce
\s16\\$3\s0
.sp 6
.ce
\s16Primary Author(s):\s0
.sp
.ce
\s16 \fI\\$4\fP\s0
.ps  11
.R
.sp 2i
.ce
Copyright \(co\ 1992 University of New Mexico.  All rights reserved.
.sp 2
.ce
Printed: \*(MO \n(dy, 19\n(yr
.KE
.P1
\ 
.bp
..
.if !\nS .nr  S 10
.if !\nW .nr  W 6i
.S D D
.ds f. inst_guide.man
.J2 10 "Installation Guide"
.K2 10 "INSTALLATION GUIDE" "Installation Guide for the Khoros System" "John Rasure"
.K0 "INSTALLATION GUIDE"
.NH 1 "INTRODUCTION"
.XS
\s12\*(SN  INTRODUCTION\s0
.XE
.sp 2
.PP
Welcome to Khoros 1.0 (Patch 5)!
This document contains the information that you need to load and 
install the Khoros software onto your system.  Both source and binaries
are available via anonymous ftp or by ordering a tape and
printed documentation.
.LP
The installation procedure outline follows:
.RS
.IP "Step 1)" 10
ftp from pprg.eece.unm.edu or order and receive a tape
.IP "Step 2)" 10
untar the source and/or binary files in KHOROS_HOME
.IP "Step 3)" 10
set up your user environment
.IP "Step 4)" 10
if you did NOT install binaries and want to compile, run \fBinstallit\fP
.IP "Step 5)" 10
read Volume 1, Chapter 1 of the Khoros manual and try Khoros out!
.RE
.sp
.NH 2 "PREREQUISITES"
.XS
      \*(SN  PREREQUISITES
.XE
.LP
If you are going to use the binaries provided (sun4, sgi, or
dec mips), then the prerequisite is to have some version
of the the X windows system and about 40 Megabytes of disk space plus
the amount of space needed for binaries (see table below).  
.LP
The following list of prerequisites is for those that plan on compiling the 
system.
.IP \(bu
X11R4 or X11R5 from MIT with current patches.
You need X11R4 or X11R5 libraries 
(client libraries, \fIX11, Xaw, Xt, Xmu\fP and 
\fIXext\fP) to compile Khoros; however once Khoros is compiled, it 
will run with an X11R3 server. Both X11R4 and X11R5 are available via
Anonymous FTP from "export.lcs.mit.edu".
.IP \(bu
A C compiler
.IP \(bu 
A Fortran compiler is recommended (not all of Khoros will be available without
a Fortran compiler)
.IP \(bu 
The compress program (available via Anonymous FTP from "pprg.eece.unm.edu").
.IP \(bu 
About 65 Megabytes of disk space plus room for objects, libraries
and binaries (see table below)
.LP
.TS
doublebox tab(:) expand;
c s s s s
l | l | l | r | r.
Khoros 1.0 Binaries Are Available for These Architectures
_
Vendor:Name:OS:.o's and lib:Binaries (Meg)
_
DEC:5000/3100:Ultrix 4.1:37:66
SUN:sparc:SUN OS 4.1.1:21:63
SGI:Indigo:OS 4.0:36:70
.TE
.sp
.NH 2 "OTHER DOCUMENTATION"
.XS
      \*(SN  OTHER DOCUMENTATION
.XE
.PP
If you are unsure about the installation of Khoros and need 
additional information, the following documents may be of help:
.IP "khoros" 10
This is a four page overview of Khoros.  If you are not sure what Khoros 
is and what it can do, read this document to get a better overview than
the one provided in the announcement. 
This file is located in $KHOROS_HOME/release.
.IP "chapter1" 10
Volume I, Chapter 1 of the Khoros User's manual provides general information
for the Khoros user.  This should be considered required reading.
.IP "chapter9" 10
Volume II, Chapter 9 of the Khoros Programmer's Manual provides a detailed 
description of the source configuration and \fBimake\fP system
used by Khoros.  This will be helpful to those who are porting the software
to other architectures or are having trouble with compiling.
.IP "appendixB" 10
Volume II, Appendix C of the Khoros Programmer's Manual provides a detailed 
description of the \fBimake\fP system symbols and rules. This document
is helpful when modifying the Khoros \fBimake\fP system.
.IP "announce" 10
This is the announcement of the Khoros 1.0 release.  It provides a brief
overview of Khoros and ordering information.
This file is located in $KHOROS_HOME/release.
.LP
This document, install, and the documents listed above are available in 
both postscript and plain text form on pprg.eece.unm.edu in the 
directory \f(CWpub/khoros/release\fP or in your copy of Khoros
in $KHOROS_HOME/release. 
A *.ftp indicates that it is a plain text file, a *.ps indicates postscript 
(ready to print), and a *.ms indicates that it is the source "roff" file. 
Instructions on how to obtain these files is provided below.
.sp
.NH 2 "SUPPORT AND MAINTENANCE"
.XS
      \*(SN  SUPPORT AND MAINTENANCE
.XE
.PP
Even though many users of Khoros have said that it is quality software,
Khoros 1.0 is not a commercial product.
Support is provided via an e-mail users group (khoros@chama.eece.unm.edu),
a USENET news group comp.soft-sys.khoros,
and periodic updates. To join the Khoros mailing list, mail to
khoros-request@chama.eece.unm.edu.  To report bugs, mail to 
khoros-bugs@chama.eece.unm.edu.  Please use the bug report form found in 
\f(CW$KHOROS_HOME/repos/BugReport\fP as a template for reporting bugs.
.PP
There are several companies that are likely to be selling Khoros
support in the near future.  Please inquire if you are interested.
.sp
.NH 2 "COMMON PROBLEMS"
.XS
      \*(SN  COMMON PROBLEMS
.XE
.PP
Khoros 1.0 is a large system, and often an end user only wants part of its
functionality.  This often leads to complaints about the system requirements.
The only solution to this problem now is to obtain Khoros as it is,
install it,  and then 
delete the components of the system that you do not want.
The minimum set of directories that you need to run Khoros are:
.IP bin 10
contains executables
.IP repos 10
User Interface Specification files, architecture-specific configuration files
.br
You may also want to keep:
.IP doc 10
Online help
.IP  man 10
man pages used by \fBvman\fP
.IP manual 10
contents of printed manual
.IP release 10
starter documentation 
.IP data  10
example data
.br
You do not need the following for only a "runable" Khoros system:
.IP src 10
needed for compiling
.IP lib 10
needed for compiling
.IP include 10
needed for compiling
.sp 3
.NH 1 "KHOROS VIA FTP DISTRIBUTION"
.XS
\s12\*(SN  KHOROS VIA FTP DISTRIBUTION\s0
.XE
.sp 2
.PP
First you must determine where on your system that you want to install
Khoros and then create a directory (any name is fine).
This can be done by creating a user named "khoros", or 
simply by creating a home directory such as \f(CW/usr/local/khoros\fP or 
\f(CW/usr/khoros\fP.
.sp
.NH 2 "ACQUIRE TAR FILES"
.XS
      \*(SN  ACQUIRE TAR FILES
.XE
.LP
Move to the directory that you just created and then
execute the following commands to acquire the Khoros compressed TAR files.
.RS
.IP "a."
Use ftp to connect to pprg.eece.unm.edu.
.br
\f(CW% ftp pprg.eece.unm.edu\fP  
.br
	-or- 
.br
\f(CW% ftp 129.24.24.10\fP
.sp
.IP "b."
Use "anonymous" or "ftp" as the user name.
.br
\f(CWName (pprg.eece.unm.edu:login): anonymous\fP 
.br
	-or- 
.br
\f(CWName (pprg.eece.unm.edu:login): ftp\fP 
.sp
.IP "c."
Use your e-mail address as the password; please use a valid 
e-mail address, as this ftp site logs all anonymous ftp's.
.br
\f(CWPassword (pprg.eece.unm.edu:user):\fP {your valid e-mail address}
.br
\f(CW331 Anonymous login ok, use your E-MAIL address as the password.
.br
230 Guest login ok, access restrictions apply.
\fP
.sp
.IP "d." 
Get the installation guide (this file, called install.ftp) for 
acquiring Khoros via anonymous ftp.
(note that "install.ftp" is the plain text file - both ".ms" and ".ps"
files are available for those who would like them).
.br
\f(CWftp> cd /pub/khoros/release
.br
ftp> get install.ftp\fP
.sp
.IP "e."
Set the ftp program to binary mode.
.br
\f(CWftp> bin\fP
.sp
.IP "f."
The next step is to actually get the Khoros TAR files.
The compressed TAR files are located in four separate
directories: bins (sun4, sgi, decmips), system,
source and data.  Within each of these directories, you will
find both the compressed TAR file and a set of "split"
files created from that TAR file.  You can have a functional
Khoros system without the data and system directories, in other words,
a minimal system can be installed with only system and bins.
.IP
To get the system directory:
.br
\f(CWftp> cd system\fP
.br
\f(CWftp> get system.tar.Z\fP
.sp
.IP
The system.tar.Z has been split into many different files;
if you have trouble getting the system.tar.Z file, 
you may try getting each of the split files
individually. To use this method, substitute the previous commands with:
.IP
\f(CWftp> prompt
.br
ftp> mget system.[0-9]*\fP
.sp
.IP "g."
In the above steps, you acquired the "foundation" (doc, dotfiles,
repos, man, manual, release) of the Khoros system. 
In order to get bins, source (src and include) and data, 
go to that directory on pprg.eece.unm.edu
and follow the same basic steps as above.  A minimal system can be
created by only obtaining the system and bins directories.
.RE
.sp
.NH 2 "COMMON PROBLEMS IN ACQUIRING THE SYSTEM"
.XS
      \*(SN  COMMON PROBLEMS IN ACQUIRING THE SYSTEM
.XE
.PP
It is not uncommon for the files to be corrupted during ftp transfer.  To
verify that you have good files, use the *.listing file found
in each directory of pprg along with the TAR files.  Check to
see that the calculated checksums match.   For example,  if you got the
system.tar.Z file, this procedure will be simple.
First, get the "system.listing" file from pprg.eece.unm.edu,
in /pub/khoros/system, if you have not already done so.  Then, run:
.IP
\f(CW% sum system.tar.Z\fP
.LP
The output of the \fIsum\fP program should match the statistic given for
system.tar.Z, at the top of the system.listing file.  If it does not match,
this indicates that the TAR file has been corrupted.  If the TAR file has
been corrupted, you may want to re-acquire the system as detailed in the
previous section.  Or, you can find out which files are bad by executing:
.IP
\f(CW% zcat system.tar.z | tar tvf - > my_system.listing
.LP
Now, execute:
.IP
\f(CW% diff system.listing my_system.listing
.LP
This will list the differences between the two files.  Of course, the first
~30 lines will differ, as our system.listing file has additional checksum
information at the beginning;  however, if any other lines in the listing
differ,  look at the filenames listed on the lines that differ.  This will
indicate which files were corrupted.
.PP
If you got the split files, it is best to write a small "foreach" script to 
perform the checking procedure for you.
.sp
.NH 2 "UNTAR THE FILES"
.XS
      \*(SN  UNTAR THE FILES
.XE
.PP
You have already created a "home" directory for the TAR files, now you
must set the environment
variable KHOROS_HOME.  It should be set to the home directory that you
created above. For instance, if you created a home directory /usr/khoros,
.IP
\f(CW% setenv KHOROS_HOME /usr/khoros\fP
.br
      or
.IP
\f(CW% setenv KHOROS_HOME ~khoros\fP
.sp
if you set up a user name for Khoros.
.LP
All of the TAR files should be untarred in the KHOROS_HOME directory.
(In the case of untarring binaries for more than one architecture, you
may want to create a binmach directory and untar the bins into 
different subdirectories.)
To untar the system.tar.Z file, use the following commands:
.IP
\f(CW% cd $KHOROS_HOME\fP
.IP
\f(CW% zcat system.tar.Z | tar -xfoB -\fP
.ce
-OR-
.br
\f(CW% uncompress -c  system.tar.Z | tar -xfoB -\fP
.sp
.LP
If you transferred the split files instead of the system.tar.Z
file, you will need to do:
.IP
\f(CW% cd $KHOROS_HOME
.br
% cat system.[0-9]* | uncompress > system.tar
.br
% tar -xf system.tar\fP
.LP
Alternatively, you may use (WARNING: this is not as reliable and doesn't
seem to work on bindecmips):  
.IP
\f(CW% zcat system.[0-9]* | tar -xfoB -\fP
.ce
-OR-
\f(CW% uncompress -c system.[0-9]* | tar -xfoB -\fP
.sp
.LP
You should follow the same basic procedure for the data, source and
bins TAR files. After you untar the compressed TAR file, 
you may want to remove the TAR file to save space.
.sp
.NH 2 "COMMON PROBLEMS IN UNTARRING FILES"
.XS
      \*(SN  COMMON PROBLEMS IN UNTARRING FILES
.XE
.PP
Be sure that you have not run out of disk space by using the \f(CW%df .\fP
command.  If you run out of disk space during the untarring procedure, the 
untarred Khoros system will be corrupted.  Delete the untarred Khoros 
system, and free up some extra space before starting the untarring procedure 
again.  Often, an uncompressed TAR file gets left around after it is 
successfully untarred; delete it to free up additional space.
.sp
.NH 1 "KHOROS VIA TAPE DISTRIBUTION"
.XS
\s12\*(SN  KHOROS VIA TAPE DISTRIBUTION
.XE
.sp 2
.PP
First you must determine where on your system that you want to install
Khoros and then create a directory (any name is fine).
This can be done by creating a user named "khoros", or 
simply by creating a home directory such as \f(CW/usr/local/khoros\fP or 
\f(CW/usr/khoros\fP.
.PP
The tape distribution includes tape(s) with Khoros source and binaries (if
ordered), Volume one and two of the Khoros manual and installation
instructions for extracting Khoros from the tape(s).
.sp
.NH 2 "EXTRACTING KHOROS FROM TAPE"
.XS
      \*(SN  EXTRACTING KHOROS FROM TAPE
.XE
.PP
Your tape distribution should include instructions on how to extract Khoros
from the tape(s). If you have problems with extracting Khoros off the tape(s),
please contact us. Note, make sure you move to the directory that you 
just created before extracting Khoros from tape.
.PP
If you did not receive binaries or want to compile Khoros on another 
architecture, follow the instructions below for compiling Khoros.
.sp
.NH 1 "CONFIGURING YOUR ENVIRONMENT"
.XS
\s12\*(SN  CONFIGURING YOUR ENVIRONMENT
.XE
.sp 2
.PP
You will need to set up your user environment so that Khoros applications will 
run properly.  The files of concern are: .cshrc or .login, .khoros_env 
and .Xdefaults.
If you need more details than what is provided below, please read Chapter 1, 
Volume 1 on "Getting Started" with Khoros.
.PP
Provided with the release is a directory called "dotfiles" that provides
templates or examples for the files mentioned below.
.sp
.IP .cshrc  12    
Modify your ".cshrc" or ".login" file to include 
a path to $KHOROS_HOME/bin.  The ".cshrc" or ".login" file should 
\f(CWsource .khoros_env\fP.
.sp
.IP .khoros_env 
The environment variables used by Khoros are set in the .khoros_env file.
Use the file \f(CW$KHOROS_HOME/dotfiles/khoros_env\fP as a template.  
.IP
\f(CW% cp dotfiles/khoros_env .khoros_env\fP
.sp
.IP .Xdefaults  
Use the one provided to start with; it is in 
\f(CW$KHOROS_HOME/dotfiles/Xdefaults\fP.
.IP
\f(CW% cp dotfiles/Xdefaults .Xdefaults\fP
.IP
As a note, Khoros was developed using primarily the \fBtwm\fP 
window manager which is distributed with X11R4.  To test out your
new environment, execute the following commands:
.IP
\f(CW% source .cshrc\fP
.IP
\f(CW% xrdb .Xdefaults\fP
.PP
If you have obtained and untarred binaries, you can skip the following
section on compiling Khoros. However, it is very important that you execute 
the following program to configure the man pages for your site:
.IP
\f(CW% $KHOROS_HOME/man/utils/tmac/customize\fP
.LP
If you forget to run the \fIcustomize\fP program, the \fBvman\fP command
will not work, and you will not have access to the Khoros man pages.
.sp
.NH 1 "COMPILING KHOROS"
.XS
      \*(SN  COMPILING KHOROS
.XE
.PP
If you have all of the prerequisites as stated above, and you are
compiling for one of the platforms listed above, the configuration
should be quite simple.  However, if you are compiling for a
new (unsupported) architecture or want to support multiple
architectures, you should read $KHOROS_HOME/release/chapter9 and
use $KHOROS_HOME/release/appendixB as a reference for \fBimake\fP
changes. You should be most concerned with configuring the Khoros 
\fBimake\fP system correctly. If you received a printed manual consult
Volume II, Chapter 9 and Appendix B.
.sp
.NH 2 "CONFIGURING THE IMAKE SYSTEM"
.XS
           \*(SN  CONFIGURING THE IMAKE SYSTEM
.XE
.PP
Before starting the compile, the \fBimake\fP configuration files
in $KHOROS_HOME/repos/config/imake_conf
must be modified. The files that need special attention are: 
\fIplatform.cf\fP, where \fIplatform\fP is the name of the 
architecture (i.e. for
a Sun use sun.cf, for a DecMips use ultrix.cf, etc) and  Site.def.
The symbol defines in these files need to be set according to how 
you want to compile Khoros. For example, if your system does not have 
a Fortran compiler, the symbol "HasFortran" in the \fIplatform.cf\fP 
file  must be set to "NO".
.PP
We have tried to tailor the \fBimake\fP configuration files so that very little
effort is needed to compile Khoros, however, it is important that
you check these files for correctness.
While the \fBimake\fP configuration files such as \fIplatform.cf\fP and \fISite.def\fP
are fairly well commented, more information can be found in Chapter 9 and 
Appendix B.
Once the \fBimake\fP configuration files have been modified, you are
ready to compile Khoros. 
.sp
.NH 3 "Commonly Asked Questions About Configuring Imake"
.XS
      \*(SN  Commonly Asked Questions About Configuring Imake
.XE
.PP
Below are a few commonly asked questions about the \fBimake\fP configuration
files. If you need to use any of the following symbols or any other
imake symbol, we suggest that the symbol defines are put
in the \fIplatform.cf\fR file.
.RS
.IP Q:
X11 directories are not in the "standard" place on my machine, how
do I specify where the X11 directories exist?
.IP A:
define the symbol "XLibDir" to the directory where the X11 libraries exist
.br
.nf

	\f(CW#define XLibDir /usr/local/lib/X11\fP
.fi
.sp
define the symbol "XIncludes" to the directory where the X11 include directory
exists.
.br
.nf

        \f(CW#define XIncludes -I/usr/local/include\fP

.fi

.RE
.RS
.IP Q:
Fortran libraries are in /usr/lang rather than in /usr/lib, how do I change
where to look for Fortran libraries?
.IP A:
define the symbol "FortranLibDir" to the directory where the Fortran libraries exist
.br
.nf

	\f(CW#define FortranLibDir /usr/lang\fP
.fi
.RE
.RS
.IP Q:
I need to add some other libraries to compile against, how do I add these
extra libraries?
.IP A:
define the symbol "ExtraLibs" to the directory where the libraries exist
.br
.nf

	\f(CW#define ExtraLibs /myhome/foobar\fP
.fi
.RE
.RS
.IP Q:
How do I make the libraries load with a different option than the
C programs load with?
.IP A:
define the symbol "LibraryLdCmd" to the command that you want the
libraries to load with and the "LdCmd" to the command that you want
the C programs to load with.
.br
.nf

	\f(CW#define LibraryLdCmd ld\fP
	\f(CW#define LdCmd cc\fP
.fi
.RE
.RS
.IP Q:
How do I specify different compile options for libraries and
C programs.
.IP A:
define the symbol "LibraryCCOptions" to the options that you want the
libraries to compile with and the "DefaultCCOptions" to the options
that you want the C programs to compile with.
.br
.nf

	\f(CW#define LibraryCCOptions -q -P\fP
	\f(CW#define DefaultCCOptions -float\fP
.fi
.RE
.RS
.IP Q:
How do I specify different compile options for Fortran libraries and
Fortran object files.
.IP A:
define the symbol "LibraryFCOptions" to the options that you want the
libraries or other Fortran object files to compile with. 
.br
.nf

	\f(CW#define LibraryFCOptions -O\fP
.fi
.RE
.RS
.IP Q:
I can not regenerate the Khoros manual on a Sun Workstation
because soelim for .so lines in the roff files, limits the
file length to 64 characters.
.IP A:
This is a bug and has been reported to Sun, but not expected
to be fixed until the release after 4.1.2 (maybe). We are
distributing a public domain version of the soelim program.
If you think or know that your OS has this problem, then make
sure you have the following symbol set to YES.
.br
.nf

	\f(CW#define SoeLim YES\fP
.fi
.RE
.RS
.IP Q:
Can I compile Khoros and utilize shared libraries.
.IP A:
As of Patch 5 we are only supporting Sun shared libraries. We have the
mechanisms in place for other architectures, but have not verified
the shared rules. If you want to compile the Sun with Shared Libraries
then set the symbol "HasSharedLibraries" to YES.
.br
.nf

	\f(CW#define HasSharedLibraries YES\fP
.fi
If you want to port Khoros to use shared libraries on your 
architecture, you should model it after the the Sun version. You will
have to either modify or create a library rules file in the
$KHOROS_HOME/repos/config/imake_conf/Lib.
.RE
.PP
Although many more questions about configuring the \fBimake\fP system
have been asked, this set of questions and answers should give one the
feel of how to make changes to the \fBimake\fP configuration files.
It is strongly suggested that the document Volume 2, Appendix B, 
"Imake Symbols and Variables" be consulted when making changes to
the \fBimake\fP symbols.
.sp
.NH 2 "STARTING THE COMPILE"
.XS
      \*(SN  STARTING THE COMPILE
.XE
.PP
The installit program in $KHOROS_HOME/src
will prompt you for some default directories and startup flags.
The installit program will modify the imake \fISite.def\fP file to
include the correct location for Khoros binary, library and include
directories.  To compile Khoros, execute the following commands:
.sp
.IP
\f(CW% cd $KHOROS_HOME/src
.br
% ./installit \fP
.sp
.LP
If you would like to watch the compile, you can execute:
.IP
\f(CW% tail -f make.World\fP
.LP
Note that if you use the "tail" command to watch the Khoros system compile,
you will have to "^C" out of it when the compile has been completed.
.LP
The compile will take several hours.  Some typical times are listed below.
.sp
.nf
	SparcStation 1        5 hours (src mounted on NFS partition)
	Sun3/260              4.6 hours (using gcc on NFS partition)
	Vax 3500              4.4 hours (using cc  on NFS partition)
	DecStation 5000       3.33 hours (local disk)
	SGI Indigo            2.00 hours (local disk)
.fi
.sp
.NH 2 "COMMON PROBLEMS WITH COMPILING"
.XS
      \*(SN  COMMON PROBLEMS WITH COMPILING
.XE
.LP
Again, the most common problems is that you run out of disk space or
NFS will time out during the compile.  If this happens, you should:
.IP
\f(CW% cd $KHOROS_HOME/src\fP
.br
\f(CW% make allclean; installit \fP
.LP
The reason that you need to "clean"
the system is because of the possibility of corrupted .o's and libs.
.PP
It is not unusual to have a system failure (NFS dies, machine crashes, etc)
during the compile.  Follow the same instructions as above.
.PP
If the "installit" fails due to compile errors, please verify that you
have configured the \fBimake\fP system files located in
$KHOROS_HOME/repos/config/imake_conf correctly. Consult Volume II, Chapter 9
for assistance.
.sp 3
.NH 1 "INSTALLING TOOLBOXES"
.XS
\s12\*(SN  INSTALLING TOOLBOXES\s0
.XE
.PP
This section discusses how to install a toolbox that was created by another
person or was developed on another machine, and is being set up on a new
machine.  Note, It is assumed that Khoros is already installed at this point.
The following steps must be followed in order to update the
configuration files for the new directory and machine.
.IP 1.
Set the environment variable KHOROS_TOOLBOX to your toolbox file.  To do this
type the following command.
.sp
.RS
\f(CW% setenv KHOROS_TOOLBOX {Pathname to Toolbox file}\fP
.RE
.sp
.IP 2.
Find a location for your toolbox, and create the directory.  If you received
Khoros via tape distribution, then follow the installation instructions you
received with your order.
Otherwise, If you aquired the toolbox via ftp, the file will be in tar format.
To untar the toolbox, use the following command:
.sp
.RS
\f(CW% tar -xf {toolbox tar filename}
.RE
.sp
Make sure you cd to the directory you want to unpack it to, \fBbefore\fP typing
the untar command.
.IP 3.
For the rest of this discussion, \f(CW{top dir}\fP will refer to the directory
that contains the top level of your toolbox.
Modify the \f(CW{top dir}/repos/config/src_conf/{toolbox}_mf\fP file.
Look for the KHOROS_USER tag inside the file, and substitute your user
name for one that is already there.
Use \f(CW\\pwd\fP in the \f(CWtoolbox/src\fP directory to
get the absolute path, and replace the path assigned to the LOCAL_SRC_TOP tag
with this new path.
.IP 4.
Run \fBkraftsman\fP to add the toolbox entry to your toolbox file.  (See
the help page on "ADD TOOLBOX" option on the "Creation" pane in
\fBkraftsman\fP, or check in Volume 2, Chapter 11 for information on
how to add a toolbox to your toolbox file.)
.IP 5.
After adding the toolbox entry to your toolbox file, go to the "Configuration"
pane, and make sure that both the Binary Path and Library Path are correct.
(See the configure toolbox documentation in Volume 2, Chapter 11.)  Once
you have set these paths correctly, you may exit \fBkraftsman\fP.
.sp
.LP
The rest of the instructions explain how to build and install all the
routines in the newly installed toolbox.
.sp
.IP 6.
execute:
.br
\f(CW% cd {top dir}/src\fP
.IP 7.
execute:
.br
\f(CW% make Makefile Makefiles\fP
.IP 8.
execute:
.br
\f(CW% make install\fP
.LP
Finally, you will need to add \f(CW{top dir}/bin\fP to your path so that you
will be able to execute the routines.  You may want to do this in your
".cshrc" file, so that you will not have to remember to set the path
every time you log in.
.sp 3
.NH 1 "GETTING STARTED"
.XS
\s12\*(SN  GETTING STARTED\s0
.XE
.PP
Now that you have Khoros installed, you will want to use the manual printing 
utility, \fBprnmanual\fP, to print out Volume 1, Chapter 1, 
"Getting Started", and other documents. If you received a printed copy
of the manual, there is no need to reprint any of the manual.
.PP
Questions, comments, constructive criticism can be mailed to the
Khoros E-Mail Users Group, \f(CWkhoros@chama.eece.unm.edu\fP, or the
Khoros USENET news group, \f(CWcomp.soft-sys.khoros\fP.  To join the e-mail 
group, 
mail to \f(CWkhoros-request@chama.eece.unm.edu\fP.
\fIPLEASE:\fP only requests to get on or off the Khoros mailing
list should go to this address.  Other mail is very likely to get
lost or be deleted.
.PP
Once you are a member of the Khoros Users Group, you may mail any questions
that are not addressed in the Khoros Manuals to 
\f(CWkhoros@chama.eece.unm.edu\fP.
If a member of the Khoros group itself cannot answer your question immediately,
it is likely that another Khoros user may be able to.
.PP
As with any system approaching the size of the Khoros system, you can expect
to find some bugs.  We already are aware of several bugs;  these can be found
in $KHOROS_HOME/repos/BugList.  If you find a bug in the Khoros system, please
look through this file first to see if it is one of the bugs that we already
have on our list.  We \fIstrongly\fP encourage you to report any bugs that
you may find that are not listed in the BugList.  All bugs are to be reported
via \fIemail\fP, to \f(CWkhoros-bugs@chama.eece.unm.edu\fP. When reporting
bugs, please include the version of Khoros (located in the file 
$KHOROS_HOME/src/Patchlevel), the machine type (execute: uname -a), and
how the bug can be duplicated. You can send us Cantata Workspaces and/or
Journal Playback files.
.PP
We hope that you like the Khoros system! 
.TC 10 "INSTALLATION GUIDE"
