[alt.sources] ST-0X SCSI driver for 386/ix v1.0 pt 1/6

tin@szebra.szebra.uucp (Tin Le) (09/17/90)

Pardon me if I did this wrong, but this is my first source release
to alt.sources (actually to any news group).  This is the Seagate
ST-0x SCSI driver I promised.  Below is part of the README file.

README
------

	SCSI driver for Seagate ST-02 Host Adapter for Interactive
	386/ix v2.0.2.  Usage rights are release into the public
	domain.  You may use and distribute this package, but you
	may not charge for it.

	This is a modified version of the ST-01 driver by Tatu Ylonen.
	His driver was for Microport UNIX v3.00e, I adapted it for
	386/ix, fixed some problems (changed char to unsigned char),
	optimized things a little bit more.

	The difference between the ST-01 and ST-02 is that the ST-02
	also include floppy ctlr (both 5 1/4" and 3 1/2").  Since Tatu
	wrote his driver, Seagate apparently changed the revision of
	the ST-0X boards.  They now uses 16K BIOS instead of 8K.
	Luckily, the hardware addresses seemed to have been kept the
	same (anyone who knows how I can get more technical information
	on these boards, please let me know - email to tin@szebra.uucp
	or uunet!claris!szebra!tin).

	Here is a recap of the featurres and drawbacks of the boards:

	Advantages:

	- will work with most SCSI disks
	- no limit on disk or partition size
	- each physical driver can have up to 15 partitions
	- support multiple drives (up to 7) on a single ctrlr
	- transfer rate faster than MFM disk
	- the ST-02 (ST-01) will work in the system along with
	other controller you have (ST506 or RLL).
	- driver is free and complete SCSI subsystem can be put
	together at low cost
	- you have source code!

	Disadvantages:

	- does not use DMA
	- character devices not supported (no raw I/O)
	- you can not boot from SCSI disk
	- lots of data movement at each interrupt, which can
	lead to contention with the serial ports


#!/bin/sh
# This is a shell archive (produced by shar 3.49)
# To extract the files from this archive, save it to a file, remove
# everything above the "!/bin/sh" line above, and type "sh file_name".
#
# made 09/17/1990 06:15 UTC by tin@szebra.uucp
# Source directory /tmp/st02
#
# existing files will NOT be overwritten unless -c is specified
#
# This is part 1 of a multipart archive                                    
# do not concatenate these parts, unpack them in order with /bin/sh        
#
# This shar contains:
# length  mode       name
# ------ ---------- ------------------------------------------
#  28207 -rw-r--r-- Driver.uu
#    496 -rwxr-xr-x Makedev
#  10877 -rw-r--r-- README
#   7169 -rw-r--r-- README.2
#    260 -rw-r--r-- config
#   1975 -rwxr-xr-x install
#    673 -rw-r--r-- makefile
#     36 -rw-r--r-- mdevice
#     36 -rw-r--r-- node.d
#  43689 -rw-r--r-- scsi.c
#   3587 -rw-r--r-- scsi.h
#    805 -rw-r--r-- scsiasm.s
#   6168 -rw-r--r-- scsipart.c
#  56557 -rw-r--r-- scsipart.uu
#     31 -rw-r--r-- sdevice.d
#   2319 -rw-r--r-- td.c
#  50381 -rw-r--r-- td.uu
#
if test -r _shar_seq_.tmp; then
	echo 'Must unpack archives in sequence!'
	echo Please unpack part `cat _shar_seq_.tmp` next
	exit 1
fi
# ============= Driver.uu ==============
if test -f 'Driver.uu' -a X"$1" != X"-c"; then
	echo 'x - skipping Driver.uu (File already exists)'
	rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting Driver.uu (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'Driver.uu' &&
begin 755 Driver.o
M3 $$ &Y-]"9R1P  9P   !P   $+ 0  P!\  *@0             -    "0
M $  +G1E>'0   #0    T    , ?  #0    !#,       #V 0  (    "YD
M871A    D !  )  0 "H$   D"   *!&        %0   $     N8G-S    
M #@10  X$4                            "     +F-O;6UE;G0     
M     ,P!   X,0                    (  %6+[(/L"%=H@ E  .@?____
M6:&4 $  Q@#A,]+K Y"00H'Z$"<  'SWH90 0 #& & STNL$D)"00H'Z(*$'
M 'SW,__K$9"0D&G'% $  ,: J %   !'N 0    [^'SI7\G#D)!5B^R#[ Q7
M5E,S]C/;ZRV0:"@*0 #HLO[__UDS_^L"D$>!_X"6F !\]T;K$*&4 $  Q@#@
M,\!;7E_)PY"AE !  ,8 8*$$    Q@" H90 0 #& # S_^L0H90 0  /M@"I
M@    '4M1X'_X),$ 'SHH90 0 #& &"#_@)\-VBF"4  Z$7^__]9N (   !;
M7E_)PY"0,_:A!    (M-"+H!    T^(($*&4 $  Q@#J,__K&9#HX_[__T;K
M@*&4 $  #[8 J0$   !U(4>!_Z"& 0!\Z*&4 $  Q@!@@_L"?#>X 0   %M>
M7\G#D&E%"!0!  #&@*@!0  !:44(% $  ("XX !   !U>J&4 $  Q@#H,__K
M+Y"00S/_ZP20D)!'@?\@3@  ?/?I#O___Y"0H90 0  /M@ E'@   #T:    
M=#A'@?] #0, ?./_=0AHX@E  .AR_?__@\0(:44(% $  ,: X !   &AE ! 
M ,8 X#/ 6UY?R<.0D*$$    Q@# H90 0  /M@"I 0    ^%E?[__^ET_O__
M58OL4%=64XMU"&G&% $  (J8= %  .D2 0  D#/)ZQ"AE !   ^V *D0    
M=1%!@?F@A@$ ?.CI*P$  )"0D*&4 $  #[8 J0X    /A14!  "$VW0AOP$ 
M  "A!    &G6% $  (N2: %  (H2B!#IGP   )"0:<84 0  B[AL 4  @?\ 
M!   ?@6_  0  &G&% $  #NXV !  'X,:<84 0  B[C8 $  :<84 0  @+B$
M 4   '1&@?\ !   =@6_  0  %=H) 5  &G&% $  /^P: %  .A2_/__@\0,
M/?____]U"#/ 6UY?R<.05V@D!4  Z*<<  "#Q CK%5=IQA0!  #_L&@!0 #H
MD!P  (/$"&G&% $  "FX; %  &G&% $   &X: %  &G&% $  (.X; %    /
MC]S^___K)I"0H00   #&   SR>L0H90 0  /M@"I$    '4)08'YH \  'SH
MH90 0  /M@ E'@   #T0    =,BX 0   %M>7\G#D)!5B^Q05U93BW4(LP%I
MQA0!  #&@(0!0   Z1L!  "0D#/)ZQ"AE !   ^V *D0    =1%!@?F@A@$ 
M?.CI,P$  )"0D*&4 $  #[8 )0X    ]!     ^%& $  (3;="2_ 0   &G&
M% $  (N : %  (L5!    (H2B!#IH0   )"0D)!IQA0!  "+N&P!0 "!_P $
M  !^!;\ !   :<84 0  .[C8 $  ?@QIQA0!  "+N-@ 0 !IQA0!  " N(0!
M0   =$:!_P $  !V!;\ !   5V@D!4  Z!X;  "#Q A7:<84 0  _[!H 4  
M:"0%0 #HL/K__X/$##W_____=1\SP%M>7\G#D)"05VG&% $  /^P: %  .C>
M&@  @\0(:<84 0  *;AL 4  :<84 0   ;AH 4  :<84 0  @[AL 4    ^/
MU/[__^LFD)"A!     ^V #/)ZQ"AE !   ^V *D0    =0E!@?F@#P  ?.BA
ME !   ^V "4>    /10   !TR+@!    6UY?R<.0D%6+[%!75E.+70@S]NE(
M @  D)"04^C*_/__687 #X4U @  4VAU"D  Z.;Y__^#Q BX!    %M>7\G#
MD%/H*O[__UF%P ^%#0(  %-HG I  .B^^?__@\0(N 0   !;7E_)PY"A!   
M &G3% $  (N*< %  /^"< %  (H1B!#IU $  )"0D)!IPQ0!  "+%00   "*
M$HB0=0%  .FW 0  D)"0H00   #&  BAE !  ,8 X.F? 0  D)"0H00    /
MMCB!Y_\   "+QX7 =&0] @    ^$G0   #T#    #X3*    /00    /A L!
M   ]!P    ^$7 $  #T(    #X11 0  /8     /A$8!  #WQX     /A3H!
M  !74VC""D  Z.KX__^#Q SI)@$  )"0:<,4 0  QH"H 4   *&4 $  Q@!@
M:<,4 0  BH!U 4  A,!U$VH 4^AG!P  @\0(,\!;7E_)PY"X!    %M>7\G#
MD)!IPQ0!  !ITQ0!  "+DF@!0 ")D(@!0 !IPQ0!  !ITQ0!  "+DFP!0 ")
MD(P!0 #IJP   )"0D&G#% $  &G3% $  (N2B %  (F0: %  &G#% $  &G3
M% $  (N2C %  (F0; %  &G#% $  &G3% $  (N2D %  (F0< %  .M>D)!I
MPQ0!  #&@*@!0   :<,4 0  QX!\ 4   0   *&4 $  Q@!@N 8   !;7E_)
MPY"AE !   ^V %!H] I  .C5]___@\0(ZQ0]#@   '?AA<!\W?\DA2P)0 "0
MD$:!_D!"#P!\&VG#% $  (.X> %   !T#+@#    6UY?R<.0D*&4 $  #[8 
MJ0$   !U)5-H40I  .A^]___@\0(:<,4 0  QH"H 4   +@$    6UY?R<.A
ME !   ^V *D0    =)FAE !   ^V "4.    Z7/___^0D)!5B^R#[ A75HMU
M"*&4 $  Q@ @,__K99"AE !   ^V "4E    /20   !U3Z$$    B@"(1?L/
MML"I@    '44#[9%^U!H&PM  .CQ]O__@\0(ZR> 9?M_#[9%^XO.N@$   #3
MXB/"=3</MD7[4&A("T  Z,CV__^#Q A'@?\ "3T ?)2AE !  ,8 8%9H@0M 
M .BI]O__@\0(,\!>7\G#H90 0 #& *0S_^L0H90 0  /M@"I(    '0)1X'_
M0 T# 'SH,__K$*&4 $  #[8 J0$   !T"4>!_T - P!\Z*&4 $  Q@#@:<84
M 0  QH"H 4   ;@!    7E_)PY"058OL4%=6BW4(:<84 0  :=84 0  :<X4
M 0  BXF4 4  B8J( 4  B8AH 4  :<84 0  :=84 0  :<X4 0  BXF8 4  
MB8J, 4  B8AL 4  :<84 0  :=84 0  :<X4 0  BXF< 4  B8J0 4  B8AP
M 4  ZPV0:<84 0  _XB  4  5NCJ]O__68OXA?]T!XO'7E_)PY!6Z([[__]9
MB_B#_P8/A:H   !IQA0!  " N(4!0   =!-6Z$'^__]9A<!UU.FS    D)"0
M:<84 0  @[BD 4   '09:<84 0  QX!\ 4   0   +@&    7E_)PVG&% $ 
M ,> ? %   $   !H&@$  &G&% $  (V J %  %#H)?7__X/$"#T!    =1=I
MQA0!  #&@*D!0   N 0   !>7\G#D&G&% $  ("XJ %    /A4G____K*Y"0
MD(7_= J#_P%T!8/_ G4:A?\/A"?___]75NB# P  @\0(Z1C___^0D)!HM M 
M .BZ]/__66G&% $  (.X@ %   $/C][^__^#_P-T!8/_ G4%Z&?U__]IQA0!
M  #&@*@!0   H90 0 #& &!75N@O P  @\0(B\=>7\G#D)!5B^Q05U:+?0CH
M8O3__XOP:<<4 0  @+BI 4   '1?@WTL '1*5NA%]/__6;@%    7E_)PY"0
MD%;H,O3__UEJ&FG'% $  (V J0%  %#H'?3__X/$"#T!    =0NX!    %Y?
MR<.0D.@#]/__B_!IQQ0!  " N*D!0   =;IIQQ0!  "+51")D)0!0 !IQQ0!
M  "+512)D)@!0 !IQQ0!  "+50R)D)P!0 !IQQ0!  "*52"(D'0!0 !IQQ0!
M  #&@'4!0  !@WT8 '0'BT480.L#D#/ :=<4 0  B8)X 4  :<<4 0  QX!\
M 4       &G'% $  (M5'(F0@ %  &G'% $  (I5)(B0A %  &G'% $  (I5
M*(B0A0%  &G'% $  (M5+(F0I %  &G'% $  ,: J0%   %6Z"_S__]95^CH
M_/__65Y?R<.0D)!5B^R#[!1I10@4 0  BXC8 $  A<EU!;D  @  BT44 \%(
MF??YB47P]T48 0   '0'N"@   #K!;@J    B$7VQD7W (M%#,'X&(A%^(M%
M#,'X$(A%^8M%#,'X"(A%^HI%#(A%^\9%_ "+1?#!^ B(1?V*1?"(1?[&1?\ 
M_W4@_W4<BT48)1    !0:@!J VH%_W44_W40C47V4/]U".@-_O__@\0HR<-5
MB^Q05U:+?0R+=0AIQA0!  "-@-@ 0 ")1?Q7:@#_-_]W&/]W'(M'(,'@"9F+
M3?SW.6G6% $  (V2Z !   ^_3Q2!X0\    #!,I05N@&____@\0<7E_)PY"0
MD%6+[%=6Z!+R__^+\(-]# !T+HM%#(MX#(7_=3%I10@4 0  BU4,.9"@ 4  
M=!]I10@4 0  B[B@ 4  ZQ"0D)!I10@4 0  B[B@ 4  @WT, '1@:44(% $ 
M (N H %  #E%#'43:44(% $  (M5#(M2#(F0H %  (M%#(-X$ !T#(M $(M5
M#(M2#(E0#(M%#(-X# !T#(M #(M5#(M2$(E0$(M%#,= #     #'0!      
MA?]T#%?_=0CHY/[__X/$"%;H4_'__UE>7\G#D)!5B^Q75NA"\?__B_AI10@4
M 0  QH"I 4   &E%"!0!  #&@*@!0   :44(% $  ,> ? %       !I10@4
M 0  B["D 4  A?9T#H-]# !T+($.!    .LD:44(% $  ("XA0%   !U%&E%
M"!0!  "-@*@!0 !0Z-'P__]95O]U".BK_O__@\0(A?9T!U;HNO#__UE7Z+/P
M__]97E_)PY"058OL4%=64Z&4 $  #[8 J2    !T"L=%_     #K&Y!;7E_)
MPY"0D*&4 $  #[8 J00   !U%?]%_+@@3@  .47\?.1;7E_)PY"0D*$$    
M#[8X@>?_    ]\>     =197:-H+0 #H/_#__X/$"%M>7\G#D)"0@>=_____
M,]OK%9"0B\NX 0   -/@#[; B]<CT'4&0X/["'SH@_L(?12+R[@!    T^ /
MML#WT(O7(]!T%U=3: 4,0 #HZ^___X/$#%M>7\G#D)"0@_L$?!=J!%-H- Q 
M .C.[___@\0,6UY?R<.0D.B_[___B_!IPQ0!  " N*@!0   =0]IPQ0!  " 
MN*D!0   =3=IPQ0!   /OH"I 4  4&G#% $   ^^@*@!0 !04VAF#$  Z'CO
M__^#Q!!6Z&_O__]96UY?R<.0:<,4 0  @+B% 4   '0=4VBI#$  Z$[O__^#
MQ A6Z$7O__]96UY?R<.0D)"AE !  ,8 Y,=%_     #K%9"0D*&4 $  #[8 
MJ2    !T,?]%_(%]_"!.  !\Y:&4 $  Q@!@4VC7#$  Z/KN__^#Q A6Z/'N
M__]96UY?R<.0D)#'1?P     ZQ60D)"AE !   ^V *D!    =3'_1?R!??P@
M3@  ?.6AE !  ,8 8%-H'0U  .BN[O__@\0(5NBE[O__65M>7\G#D)"0H90 
M0 #& .!IPQ0!  #&@*@!0  !:<,4 0  QX!\ 4       ,8%* E   %6Z&KN
M__]9:<,4 0  @[BD 4   '0.4^A ]/__Z90   "0D)!IPQ0!  "-@*@!0 !0
MZ#KN__]9Q@4H"4   %M>7\G#D&G#% $  ,: J %   "%_W3B@_\&=-UIPQ0!
M  "#N( !0   ?@J#_P)T!8/_ 74E5VAM#4  Z/+M__^#Q BAE !  ,8 8%=3
MZ)3\__^#Q CKHI"0D&G#% $  /^(@ %  &B;#4  Z,+M__]94^A[]___68OX
MZXJ0D%6+[%=64^BI[?__B]B /2@)0   #X4F 0  ,_;I%@$  )"0D&G&% $ 
M ("XJ0%    /A/\   !IQA0!  " N*@!0   #X7L    :<84 0  @[A\ 4  
M  ^$V0   &G&% $  (.X> %    /A,8   !IQA0!  " N(4!0   = GIL@  
M )"0D)!IQA0!  #_@'P!0 !IQA0!  !IUA0!  "+DG@!0  YD'P!0  /C(0 
M  !IQA0!  #'@'P!0       :<84 0  @[BD 4   '4C5FBY#4  Z-CL__^#
MQ AIQA0!  "-@*@!0 !0Z,/L__]9ZT*_ P   (7_=#F#_P9U NLR:<84 0  
M@[B  4   '0*@_\"= 6#_P%U0U=6:/<-0 #HB^S__X/$#%=6Z#7[__^#Q A&
M@_X$#XSD_O__:@IJ &A,$@  Z&;L__^#Q Q3Z%WL__]96UY?R<.0D)!IQA0!
M  #_B( !0 !75F@N#D  Z#SL__^#Q Q6Z//U__]9B_CI</___Y"0D%6+[%=6
MBWT(BW4,ZPN0D)"+QT>*%D:($( ^ '7SQ@< 7E_)PU6+[(/L"(-]$!)^!\=%
M$!(   #&1?H#QD7[ ,9%_ #&1?T BD40B$7^QD7_ &H _W44:@!J 6H#:@+_
M=1#_=0R-1?I0_W4(Z$CW__^#Q"C)PY"0D%6+[(/L",9%^@#&1?L QD7\ ,9%
M_0#&1?X QD7_ &H :@%J &H!:@%J 6H :@"-1?I0_W4(Z ;W__^#Q"C)PY!5
MB^R#[ B#?1 D?@?'11 D    QD7Z$L9%^P#&1?P QD7] (I%$(A%_L9%_P!J
M /]U%&H :@%J VB6    _W40_W4,C47Z4/]U".BQ]O__@\0HR<-5B^R#[ R#
M?1 (?@?'11 (    QD7V)<9%]P#&1?@ QD7Y ,9%^@#&1?L QD7\ ,9%_0#&
M1?X QD7_ &H _W44:@!J 6H":)8   #_=1#_=0R-1?90_W4(Z$_V__^#Q"B%
MP'0$,\#)P[@!    R<.058OL@^QX5U93BUT(:<,4 0  QX#8 $       &G#
M% $  ,: J0%   !IPQ0!  #&@*@!0   :<,4 0  QX#D $       &G#% $ 
M ,: X !   !3Z*/^__]9B_"%]G1H@_X$= 6#_@5U>U-H80Y  .@WZO__@\0(
MQT6,     .LBD)"0BT6,N:"& 0"9]_F%TG4-4^AC_O__68OPA?9T#/]%C(%]
MC("6F !\V(7V=!A3:($.0 #H\>G__X/$"#/ 6UY?R<.0D)!J 6IDC4644%/H
MTOW__X/$$(OP@_X!= 6#_@)U!S/ 6UY?R<.%]G084VB>#D  Z+'I__^#Q @S
MP%M>7\G#D)"0:@%J9(U%E%!3Z";^__^#Q!"+\(7V=!53:,D.0 #H@NG__X/$
M"#/ 6UY?R<.*192$P'054VCI#D  Z&;I__^#Q @SP%M>7\G##[9%F(U !HU5
ME /"Q@  C46<4&G#% $  (V F !  %#H#_W__X/$"&H!:F2-19104^@*_O__
M@\00A<!U.VG#% $  ,> W !       !IPQ0!  #'@-@ 0    @  N  "  ")
M1?A3:!4/0 #H[.C__X/$".MID)"0:<,4 0  #[95FL'B" ^V39L#T8F0V ! 
M (E5^(%]^  $  !^%F@ !   _W7X4V@Z#T  Z*SH__^#Q!!IPQ0!   /ME64
MP>(8#[9-E<'A$ /1#[9-EL'A" /1#[9-EP/1B9#< $  :<,4 0  C8"8 $  
M4&G#% $  /^PV !  &G#% $  &G3% $  (N W !   ^O@M@ 0 "-@   " "Y
M   0 )GW^5!3:&X/0 #H,NC__X/$%&H :@%J 6IDC4644&H 4^C[]/__@\0<
MB_"%]G064VB:#T  Z ?H__^#Q @SP%M>7\G#D(U%E(OX,_;IG@   )"0D) /
MM@?!X! /ME<!P>(( \(/ME<" \*)19 /MD<#P> 0#[97!,'B" /"#[97!0/"
MB46,@WV0 '4&_T60_TV,:<,4 0  C8#H $  B]:+39")#-!IPQ0!  "-@.@ 
M0 "+38R)3- $A?9U"VC)#T  Z'KG__]9BT6,#Z]%^(V    ( +D  !  F??Y
M4&C5#T  Z%GG__^#Q A&@\<&@_X/?3N /P /A5C___^ ?P$ #X5.____@'\"
M  ^%1/___X!_ P /A3K___^ ?P0 #X4P____@'\%  ^%)O___X7V= MHW ] 
M .@$Y___66G#% $  (FPY !  &G#% $  ,> 8 %       !IPQ0!  !ITQ0!
M  "+DMP 0 ")D&0!0 "X 0   %M>7\G#D%6+[%=HXP]  &C>#T  Z+'F__^#
MQ B#/9  0   =1AJ 6C+    :@%J >B5YO__@\00HY  0 "#/9  0   =0AH
M/!!  .MKD*&0 $  C8  "@  HY0 0 "AD !  (V   P  *,$    Q@4D"4  
M #/_ZR*0:<<4 0  QX"D 4       &G'% $  ,> H %       !'@_\$?-HS
M_^L*D)!7Z'+[__]91X/_!'SS:'400 #H#>;__UE?R<.058OL@^P,5U93#[]%
M""7_    P?@$B_@/OW4(@>8/    @#TD"4   '4:Z-GE__^+V.@>^/__4^C,
MY?__6<8%) E   &X!    #OX?2BX#P   #OP="9IQQ0!  "#N-@ 0   =!!I
MQQ0!  "+@.0 0  [\'P'Q@7I$   !EM>7\G#D)"058OLR<.0D)!5B^R#[!A7
M5E.+?0@/OT<4)?\   #!^ 2)1?P/OT<4)0\   ")1?B#??P$#XVE    :47\
M% $  (.XV !    /A)$   !I1?P4 0  C8#8 $  B47HBT<8,]*+3>CW,872
M=7.#??@/=2=I1?P4 0  C8#8 $  B47HBT<@P> )F8M-Z/<YB_#I*@$  )"0
MD)!I1?P4 0  C8#8 $  B47HBT<@P> )F8M-Z/<YB_!I1?P4 0  BX#D $  
M.47X?19I1?P4 0  C8#H $  BU7X.W30!'X:@0\$    BT<8B4<H5^B4Y/__
M65M>7\G#D)!I1?P4 0  C8#H $  BU7X.W30!'42BT<8B4<H5^AJY/__65M>
M7\G#:47\% $  (V V !  (E%Z&E%_!0!  "+5Q@#D-@ 0 !*B\(STHM-Z/<Q
MB47TB\8#1?1I5?P4 0  C9+H $  BTWX.T3*!'X\:47\% $  (V Z !  (M5
M^(T4U0     #PHM !"O&B47T:47\% $  (M5] ^OD-@ 0 "+1Q@KPHE'*.L'
MQT<H     &E%_!0!  "-@.@ 0 "+5?@#--#HP>/__XE%\&E%_!0!  "-@* !
M0 ")1>PSV^MCD)!I1?P4 0  C8#8 $  B47HBT7LBP"+0"#!X F9BTWH]SEI
M5?P4 0  C9+H $  BTWX P3*._!]'(E?$(M%[(L B7@0BT7LBP")1PR+1>R)
M..LCD)"+1>R+&(L C4 ,B47LBT7L@S@ =9>).,='#     ")7Q!I1?P4 0  
M@+BI 4   '4,5_]U_.BB\/__@\0(_W7PZ _C__]96UY?R<.058OL:@'_=0AH
MZ 1  &B$&@  Z/'B__^#Q!#)PU6+[&H _W4(:.@$0 !HA!H  .C5XO__@\00
MR<-5B^R#[!A75E.+?0R+=1"+70B%_W\%OP "  !65U-H=Q!  .BHXO__@\00
MQD7V%<9%]P#&1?@ QD7Y ,9%^@S&1?L QD7J ,9%ZP#&1>P QD7M",9%[@#&
M1>\ QD7P ,9%\0#&1?( B\?!^! E_P   (A%\XO'P?@()?\   "(1?2+QR7_
M    B$7U:@!J &H :@%J FH%:@R-1>I0C47V4%/HN>W__X/$*(7 = Y3:+(0
M0 #H%^+__X/$",9%]@3&1?< QD7X (O&P?@()?\   "(1?F+QB7_    B$7Z
MQD7[ &H :@!J &H!:@!J &H :@"-1?904^AC[?__@\0HA<!T%&CS$$  Z,+A
M__]9,\!;7E_)PY"0: H10 #HKN'__UFX 0   %M>7\G#D)"058OL9J'J$   
M9H7 = [&!>D0   !,\#)PY"0D+@!    R<.058OL@^P,5U93BT4()?\   #!
M^ 2+^(MU"('F#P   ,8%Z1    "#_Q!]$X/^#W0@:<<4 0  .[#D $  ?!+&
M!>D0   6N $   !;7E_)PY"+10Q(#XPJ 0  /04    /AQ\!  "%P ^,%P$ 
M /\DA6@)0 "#_@]U'VG'% $  /^PW !  /]U$.COX/__@\0(Z2 !  "0D)!I
MQQ0!  "-@.@ 0 #_=/ $_W40Z,S@__^#Q CI_0   )"0D)!IQQ0!  "-@)@ 
M0 "+V.G4    D&:AZA   &:%P'0+Q@7I$    3/ ZP>X 0   .OWA< /A,  
M  #_=1#H?^#__UEIUQ0!  ")@M@ 0 #II@   )!FH>H0  !FA<!T"\8%Z1  
M  $SP.L'N $   #K]X7 #X2     _W40Z#_@__]94&G'% $  /^PV !  %?H
M6_W__X/$#(7 =0?&!>D0   %5^AK]?__6>M-:<<4 0  _[#8 $  _W40Z #@
M__^#Q CK-)"0D,8%Z1   !;K*)"0D ^V U#_=1#HX-___X/$"$/_11" .P!U
MZ&H _W40Z,K?__^#Q @SP%M>7\G#58OL:"(10 #HL]___UDSP,G#D)!5B^Q6
M5P:,V([ BWT(BTT,BS4$    _/.D!U]>7<-5B^Q65P:,V([ BW4(BTT,BST$
M    _/.D!U]>7<,                                             
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M               &   8"   & @  !@(   H!@  & @  !@(   8"   4 8 
M !@(  "0!@  & @  '0&   8"   J 8  /@>  ! 'P  E!\  %0?  #C'P  
M[!\  '-C<VDZ('-E;F1I;F<@:&%R9"!R97-E="!T;R!S8W-I(&)U<PH <V-S
M:3H@87)B:71R871I;VX@=&EM96]U=" M('-O;65O;F4@:7,@<VET=&EN9R!O
M;B!T:&4@8G5S/PH <V-S:3H@=&EM96]U="!I9&5N=&EF>2!M<V<@;W5T("T@
M9')I=F4@)60@9&]E<R!N;W0@<W5P<&]R="!M97-S86=E<S\* '-C<VDZ(&%F
M=&5R('-U8V-E<W-F=6P@87)B:71R871E("%35$)360H <V-S:2!D;WAF97)N
M;W-L965P.B A4U1"4UD@=6YI=" E9 H <V-S:3H@9&%T86]U="!R971U<FYE
M9"!E<G)O<CL@=6YI=#TE9 H <V-S:3H@9&%T86EN(')E='5R;F5D(&5R<F]R
M.R!U;FET/25D"@!S8W-I.B!U;FMN;W=N(&UE<W-A9V4@<F5C96EV960@9G)O
M;2!D<FEV92 E9#H@)7@* '-C<VDZ('5N97AP96-T960@8G5S('-T871E.B!S
M=&%T=7,])7@* '-C<VDZ('!O;&QE9"!R97-E;&5C=&EO;B!W87,@;F]T(&9O
M<B!M93H@)7@* '-C<VDZ(')E<V5L96-T:6YG("AP;VQL960I('5N:70@;W1H
M97(@=&AA;B!E>'!E8W1E9#H@)7@* '-C<VDZ('1I;65O=70@<&]L;&5D('=A
M:70@9F]R(')E<V5L96-T:6]N(&9R;VT@)60* '-C<VDZ('-T87)T<V-S:3H@
M<F5T<GEI;F<@;W(@9F%I;&EN9PH <V-S:3H@:6YT<B!I9VYO<F5D("AN;W0@
M;7D@861D<BD[(&%D9'(])7@* '-C<VDZ(&EN='(@:6=N;W)E9" H:6YV86QI
M9"!I9"D[('5N:70])60@83TE> H <V-S:3H@:6YT<B!I9VYO<F5D("AU;FET
M("5D(#X](%-#4TE-05A$4DE615,@)60I"@!S8W-I.B!I;G1R(&EG;F]R960@
M*&EN=&5R;F%L('-T871E*3H@=6YI=#TE9"!C;VYN96-T960])60@8G5S>3TE
M9 H <V-S:3H@:6YT<B!I9VYO<F5D("AX9F5R(&ES('!O;&QE9"D[('5N:70]
M)60* '-C<VDZ(&EN='(@:6=N;W)E9" H=&EM96]U="!W86ET:6YG(&9O<B!3
M14P@=&\@8F4@<F5L96%S960I.R!U;FET/25D"@!S8W-I.B!I;G1R(&EG;F]R
M960@*'1I;65O=70@=V%I=&EN9R!F;W(@0E-9(&%F=&5R(%-%3"!T;R!B92!R
M96QE87-E9"D[('5N:70])60* '-C<VDZ(&EN='(Z(&-M9"!F86EL960@*"5D
M*3L@<F5T=7)N:6YG(&5R<F]R"@!S8W-I.B!I;G1R.B!R971R>6EN9R!C;VUM
M86YD"@!S8W-I.B!L;V-A;"!I;G1R(&1R:79E;B!X9F5R('=O:V5N('5P(&)Y
M('1I;65R('1I8VL[('5N:70])60* '-C<VDZ(&)L;V-K('AF97(@9F%I;',@
M:6X@=&EM97(@=&EC:SL@=6YI=#TE9"P@97)R/25D"@!S8W-I.B!X9F5R(')E
M=')I960@:6X@=&EM97(@=&EC:SL@=6YI=#TE9"P@97)R/25D"@!786ET:6YG
M(&9O<B!U;FET("5D('!O=V5R=7 N+BX* %!O=V5R=7 @=&EM96]U="!O;B!D
M<FEV92 E9 H <V-S:2!D<FEV92 E9"!I<R!N;W0@<F5S<&]N9&EN9R!P<F]P
M97)L>2X* '-C<VD@9')I=F4@)60Z(&EN<75I<GD@9F%I;&5D+@H <V-S:2!D
M<FEV92 E9"!I<R!O;B!A(&1I<F5C="!A8V-E<W,@9&5V:6-E"@!S8W-I(&1R
M:79E("5D.B!C86YN;W0@<F5A9"!C87!A8VET>0H <V-S:2!D<FEV92 E9#H@
M8FQO8VMS:7IE/25D($)325I%/25D(&YO="!S=7!P;W)T960* '-C<VD@9')I
M=F4@)60Z("5L9$U"("@E9"!B>71E('-E8W1O<G,I.B E<PH <V-S:2!D<FEV
M92 E9#H@8V]U;&0@;F]T(')E860@<&%R=&ET:6]N('1A8FQE"@!P87)T:71I
M;VYS.@ @)6QD34( "@ *)7,* %-#4TD@9&ES:R!D<FEV97(@5C$N,2 @0V]P
M>7)I9VAT("AC*2 Y+C8N,3DX."!4871U(%EL?&YE;@H)0V]P>7)I9VAT("AC
M*2 X+C@N,3DY,"!4:6X@3&4 <V-S:2!D<FEV97(@97)R;W(Z(&-O=6QD(&YO
M="!S<'1A;&QO8R!C;VYT<F]L;&5R(&UE;6]R>0H "@!S8W-I.B!F;W)M871T
M:6YG('5N:70@)60@=VET:"!B;&]C:W-I>F4])60L(&EN=&5R;&5A=F4])60*
M '-C<VDZ('=A<FYI;F<Z(&UO9&4@<V5L96-T(&-O;6UA;F0@<F5T=7)N960@
M97)R;W(@9G)O;2!D<FEV92 E9 H <V-S:3H@9F]R;6%T(&9A:6QU<F4N"@!S
M8W-I.B!F;W)M870@8V]M<&QE=&4N"@!S8W-I<')I;G0@8V%L;&5D.@H     
M0"@C*69C;G1L+F@),BXS("T@.#@O,#4O,C< 0"@C*69C;G1L+F@),BXS("T@
M.#@O,#4O,C< 0"@C*7-Y<VUA8W)O<RYH"3(N,R M(#@X+S U+S(W $ H(RET
M>7!E<RYH"3(N,R M(#@X+S U+S(W $ H(REP87)A;2YH"3(N,R M(#@X+S U
M+S(W $ H(RES-7!A<F%M+F@),BXS("T@.#@O,#4O,C< 0"@C*7-I9VYA;"YH
M"3(N,R M(#@X+S U+S(W $ H(REE<G)N;RYH"3(N,R M(#@X+S U+S(W $ H
M(RED:7(N: DR+C,@+2 X."\P-2\R-P! *",I<S5D:7(N: DR+C,@+2 X."\P
M-2\R-P! *",I9FEL92YH"3(N,R M(#@X+S U+S(W $ H(REU<V5R+F@),BXT
M("T@.#@O,#@O,3@ 0"@C*6)U9BYH"3(N-" M(#@X+S X+S$R $ H(REI;V)U
M9BYH"3(N,R M(#@X+S U+S(W $ H(REI;6UU+F@),BXS("T@.#@O,#4O,C< 
M0"@C*7)E9VEO;BYH"3(N,R M(#@X+S U+S(W $ H(REP<F]C+F@),BXS("T@
M.#@O,#4O,C<  -@   !     !@#=    5@   !0 XP   $     & /H   ! 
M    !@ @ 0  0     8 10$  $     & $H!  !6    % !A 0  0     8 
M<0$  $     & 'D!  !5    !@"! 0  0     8 C0$  $     & *4!  ! 
M    !@"R 0  0     8 MP$  %8    4 ,L!  !5    !@#< 0  0     8 
MZ0$  #X    4 /$!  !     !@ ) @  0     8 *0(  $     & #<"  ! 
M    !@ _ @  0     8 7@(  #X    4 &4"  !     !@"% @  0     8 
MB@(  %8    4 )H"  !     !@"@ @  0     8 L0(  %4    & +D"  ! 
M    !@#' @  /@   !0 S (  #X    4 .("  !     !@#G @  /@   !0 
M\0(  $     &  D#   ^    %  1 P  0     8 'P,  #X    4 "T#  !5
M    !@ Y P  0     8 0@,  #X    4 % #  !     !@!I P  0     8 
M=P,  $     & (,#  !     !@"9 P  0     8 I0,  $     & *H#  !7
M    % #" P  0     8 QP,  %@    4 -D#  !     !@#> P  6    !0 
M[0,  $     & /D#  !     !@ %!   0     8 # 0  #X    4 !4$  !5
M    !@ A!   0     8 .00  $     & &P$  !     !@!R!   /@   !0 
M?00  $     & )4$   ^    % "=!   0     8 L 0  #X    4 ,4$  ! 
M    !@#+!   50    8 U 0  #X    4 .0$  !     !@#]!   0     8 
M"P4  $     & !<%  !     !@ M!0  0     8 ,@4  %D    4 $(%  ! 
M    !@!'!0  0     8 3 4  %H    4 &T%  !     !@!R!0  60   !0 
M@04  $     & (T%  !     !@"9!0  0     8 H 4  #X    4 *D%  !5
M    !@"U!0  0     8 S04  $     & /D%   ^    %  "!@  /@   !0 
M"P8  #X    4 !$&  !     !@ 6!@  5@   !0 *@8  #X    4 #,&   ^
M    %  Y!@  0     8 /@8  %8    4 %$&  !5    !@!=!@  0     8 
M8P8  $     & &P&   ^    % !\!@  50    8 A 8  $     & (D&   ^
M    % "1!@  50    8 F08  $     & *$&   ^    % "I!@  50    8 
MPP8  #X    4 ,X&   ^    % #9!@  /@   !0 Y 8  #X    4 .\&   ^
M    % #Z!@  /@   !0 !@<  #X    4  T'  !     !@ 2!P  5@   !0 
M&@<  #X    4 "@'  !     !@ N!P  0     8 /0<  $     & $D'   ^
M    % !R!P  0     8 > <  $     & (H'  !     !@"0!P  0     8 
ME0<  #X    4 *H'  !     !@"P!P  0     8 P@<  $     & ,@'  ! 
M    !@#:!P  0     8 X <  $     & / '  !     !@#]!P  0     8 
M!@@  $     & !D(  !     !@ B"   0     8 )P@  %8    4 #X(  ! 
M    !@!5"   0     8 :0@  $     & 'D(  !     !@!^"   5@   !0 
MC0@  $     & )T(  !     !@"L"   0     8 N0@  #X    4 ,P(  ! 
M    !@#9"   0     8 [0@  %4    &  8)  !     !@ +"0  5@   !0 
M+PD  $     & #0)  !6    % !%"0  0     8 3@D  $     & %,)  !6
M    % !A"0  0     8 ;0D  $     & (D)  !     !@"A"0  0     8 
ML D  $     & -T)  !     !@#C"0  0     8 Z0D  $     &  $*  ! 
M    !@ '"@  0     8 #0H  $     & "4*  !     !@ K"@  0     8 
M,0H  $     & $ *  !     !@!&"@  /@   !0 6@H  #X    4 &8*   ^
M    % !R"@  0     8 >PH  #X    4 (4*   ^    % "4"@  0     8 
MHPH  $     & +P*  !     !@#1"@  0     8 UPH  %L    4 .T*  ! 
M    !@ $"P  0     8 "PL  #X    4 "8+   ^    %  M"P  /@   !0 
M-0L  #X    4 #T+  !     !@!""P  5@   !0 3PL  $     & %8+   ^
M    % !E"P  /@   !0 <0L  $     & '<+  !     !@"!"P  /@   !0 
MF@L  %P    4 *@+  !     !@"W"P  70   !0 R@L  %T    4 -D+  ! 
M    !@#?"P  6P   !0 ^0L  %P    4  <,  !     !@ 9#   0     8 
M* P  $     & #<,  !     !@!&#   0     8 4@P  $     & &X,  ! 
M    !@!Z#   0     8 C0P  $     & )P,  !     !@"K#   0     8 
MN@P  $     & ,8,  !     !@#-#   70   !0 U P  #X    4 .\,  ! 
M    !@!_#0  /@   !0 G T  $     & ,(-  !     !@#6#0  /@   !0 
MZ@T  %P    4  P.  !     !@ ;#@  0     8 +0X  $     & $ .  ! 
M    !@!8#@  0     8 H X  #X    4 *D.  !=    % "Z#@  7    !0 
MR0X  $     & -<.  !     !@#E#@  0     8 ]@X  $     & !4/  ! 
M    !@ E#P  0     8 *P\  %X    4 #4/   ^    % !"#P  7P   !0 
M20\  %T    4 %P/  !     !@!]#P  0     8 H0\  %4    & +@/  ! 
M    !@"]#P  5@   !0 #!   $     & !$0  !6    %  I$   0     8 
M+A   %8    4 #T0  !<    % !+$   0     8 6A   $     & &H0  ! 
M    !@!X$   0     8 ?Q   $     & (00  !6    % "-$   70   !0 
MH!   $     & *D0  !     !@"N$   5@   !0 MQ   %T    4 ,40  ! 
M    !@#9$   0     8 ]!   $     & /T0  !     !@ "$0  5@   !0 
M"Q$  %T    4 "41  !     !@! $0  0     8 21$  $     & $X1  !6
M    % !7$0  70   !0 91$  $     & '01  !     !@"!$0  0     8 
MBQ$  $     & )(1  !=    % "?$0  0     8 J!$  #X    4 *T1   ^
M    % "\$0  0     8 PA$  %X    4 ,D1  !     !@#<$0  0     8 
M\A$  $     &  42  !     !@ *$@  5@   !0 $A(  $     & !P2   ^
M    %  P$@  0     8 -1(  $     & #H2  !6    % !!$@  /@   !0 
M4Q(  %P    4 %L2  !     !@!B$@  /@   !0 :1(  #X    4 '@2  ! 
M    !@!_$@  /@   !0 BQ(  $     & )(2   ^    % ">$@  0     8 
MI1(  #X    4 +$2  !     !@"X$@  /@   !0 Q!(  $     & ,P2   ^
M    % #<$@  0     8 [A(  $     & /02  !     !@#Z$@  /@   !0 
M!A,  $     & !83  !     !@ ?$P  0     8 )!,  %8    4 #,3  ! 
M    !@ Y$P  7@   !0 6!,  $     & &P3  !     !@!Q$P  5@   !0 
M>Q,  #X    4 (@3   ^    % "1$P  /@    8 EA,  &     4 )\3  !=
M    % "T$P  0     8 NQ,  $     & , 3  !6    % #)$P  /@   !0 
MT1,  #X    4 $04   ^    % "&%   /@   !0 VQ0  #X    4 #T5   ^
M    % !H%0  0     8 >!4  $     & (45  !     !@"2%0  0     8 
MHA4  $     & *D5   ^    % # %0  0     8 Q14  %8    4 .D5   ^
M    %  &%@  0     8 "Q8  %8    4 "86   ^    % !&%@  0     8 
M2Q8  %8    4 &86   ^    % !U%@  0     8 >A8  %8    4 )$6  ! 
M    !@"6%@  5@   !0 OQ8  $     & ,46   ^    % #6%@  /@   !0 
MZ18  $     & /D6  !     !@ +%P  0     8 $!<  %8    4 #$7  ! 
M    !@!+%P  0     8 4!<  %8    4 'X7  !     !@"*%P  0     8 
MEQ<  $     & *D7  !     !@"P%P  0     8 Q1<  $     & ,H7  !6
M    % #A%P  /@   !0 \!<  $     & /47  !6    %  ,&   /@   !0 
M61@  $     & &T8  !     !@!]&   0     8 @A@  %8    4 )X8  ! 
M    !@"C&   5@   !0 N!@  #X    4 ,(8   ^    % #,&   /@   !0 
MUA@  #X    4 . 8   ^    % #J&   /@   !0 \Q@  $     & /@8  !6
M    %  %&0  0     8 $1D  $     & "<9  !     !@ M&0  0     8 
M01D  $     & $89  !     !@!+&0  5@   !0 5!D  $     & &<9  !A
M    % !O&0  0     8 =1D  $     & 'T9  !     !@"%&0  0     8 
MD!D  $     & )49  !     !@"@&0  50    8 IAD  $     & +@9  ! 
M    !@#(&0  0     8 WAD  #X    4 .H9  !     !@#O&0  5@   !0 
M&QH  $     & ",:  !<    %  J&@  /@   !0 ,!H  %T    4 #<:  ! 
M    !@!6&@  0     8 91H  $     & &\:  !B    !@"Q&@  /@   !0 
MOAH  $     & ,4:   ^    % #2&@  0     8 ]AH  $     &  P;   ^
M    %  =&P  0     8 .QL  $     & $T;  !     !@!H&P  7P   !0 
M?1L  $     & )(;  !?    % "E&P  0     8 N!L  $     & -<;  ! 
M    !@#M&P  0     8 $AP  $     & # <  !     !@ ['   7    !0 
M2QP  $     & &$<  !     !@""'   0     8 UAP  $     & .(<   ^
M    % #M'   70   !0  1T  $     &  8=   ^    !@ +'0  8P   !0 
M'1T  $     & "(=   ^    !@ G'0  8P   !0 3QT  $     & %0=  !6
M    % #3'0  /@   !0 X!T  $     & .4=  !6    %  I'@  /@   !0 
M-1X  $     & #H>  !6    % !)'@  0     8 3AX  %8    4 &4>  !B
M    !@!P'@  8@    8 I1X  &(    & +P>  !     !@#$'@  8@    8 
MVAX  #X    4 .4>   ^    % #M'@  /@   !0 ]!X  $     &  4?  ! 
M    !@ -'P  9    !0 %1\  #X    4 "0?  !     !@ P'P  9    !0 
M.!\  #X    4 $@?  !     !@!/'P  /@   !0 5A\  &(    & &$?  !B
M    !@!U'P  /@   !0 ?1\  &4    4 (H?  !     !@"/'P  /@   !0 
MEA\  &(    & *$?  !B    !@"U'P  /@   !0 O1\  &4    4 ,L?  ! 
M    !@#1'P  /@   !0 WA\  &(    & .4?   ^    % #T'P  0     8 
M_!\  &0    4  H@  !B    !@ <(   9@   !0 ,B   &8    4 $0@  ! 
M    !@!)(   5@   !0 9B   %4    & (0@  !5    !@ L"4  /@    8 
M, E  #X    & #0)0  ^    !@ X"4  /@    8 / E  #X    & $ )0  ^
M    !@!$"4  /@    8 2 E  #X    & $P)0  ^    !@!0"4  /@    8 
M5 E  #X    & %@)0  ^    !@!<"4  /@    8 8 E  #X    & &0)0  ^
M    !@!H"4  /@    8 ; E  #X    & ' )0  ^    !@!T"4  /@    8 
M> E  #X    & 'P)0  ^    !@ N9FEL90   $T   #^_P  9P%S8W-I+F, 
M                    !    -     ! "   P$     9          $    
M        $0   #0!   ! "0  P$     G $        &      !D871A;W5T
M - "   ! "0  P$     B $        (      !D871A:6X  %@$   ! "0 
M P$     E $        *            &P   .P%   ! "0  P$     U ( 
M       ,            *0   , (   ! "0  P$       $        .    
M        /0   , )   ! "0  P$     T $        0            1P  
M ) +   ! "0  P$     4 $        2      !D;W)W     . ,   ! "0 
M P$     J          4            40   (@-   ! "   P$     7   
M       6            7P   .0-   ! "   P$     T          8    
M        ;P   +0.   ! "   P$     H          :      !S8W-I:6YT
M<E0/   ! "   @$     ^ (        <      !S8W-I=&EC:TP2   ! "  
M @$     C $        >      !S=')C<'D  -@3   ! "   P$     )   
M       @            >P   /P3   ! "0  P$     5          B    
M        B    % 4   ! "0  P$     0          D            D@  
M ) 4   ! "0  P$     5          F            G    .04   ! "0 
M P$     <          H            J0   %05   ! "0  P$     Z , 
M       J      !S8W-I:6YI=#P9   ! "   @$     O          L    
M  !S8W-I;W!E;O@9   ! "   @$     A          N            LP  
M 'P:   ! "   @$     "          P            O0   (0:   ! "  
M @$     = (        R      !S8W-I<F5A9/@<   ! "   @$     '   
M       T            R@   !0=   ! "   @$     '          V    
M        U    # =   ! "0  P$     , $        X      !C:&MS=7!E
M<F >   ! "0  P$     )          Z            Y    (0>   ! "0 
M @$     O $        \            [@   $ @   ! "0  @$     %   
M       ^       N=&5X=    -     !     P&$'P  ] $>            
M   N9&%T80   )  0  "     P&H$   %0                 N8G-S    
M #@10  #     P$                        N8V]M;65N=      $    
M P', 0                    !B87-E861D<I  0  "     P!C;61P;W)T
M )0 0  "     P!D         )@ 0  "     P!S8W-I8G5F .@$0  "    
M P!R87=I;V)U9B0%0  "     P      ^    "0)0  "     P       P$ 
M "@)0  "     P N9FEL90   %4   #^_P  9P%S8W-I87-M+G,         
M   N=&5X=    %0@   !     P$\     @                 N9&%T80  
M #@10  "     P$                        N8G-S     #@10  #    
M P$                             $ $   0          @!P<FEN=&8 
M             @!C;W!Y:6X              @      '0$  '(@   !    
M @      * $  %0@   !     @!C;W!Y;W5T             @!S;&5E<   
M             @!S<&PV                 @!S<&QX                
M @!W86ME=7               @!I;V1O;F4              @!T:6UE;W5T
M             @!S<'1A;&QO8P           @!U                    
M @!P:'ES:6\              @!S=7=O<F0              @!F=7=O<F0 
M             @!S=6)Y=&4              @ T 0  <F5S971S8W-I8G5S
M &%R8FET<F%T90!D;WAF97)N;W-L965P '!O;&QE9'=A:71R96-O;FYE8W0 
M<W1A<G1S8W-I &1O<V-S:6-M9 !S=&%R=&)U9F9E<FEO '-T87)T<&5N9&EN
M9W)E<0!M87)K;F]T8G5S>0!R97%U97-T<V5N<V4 =&5S=')E861Y &1O:6YQ
M=6ER>0!R96%D8V%P86-I='D :6YI=&1R:79E '-C<VEC;&]S90!S8W-I<W1R
M871E9WD <V-S:7=R:71E &9O<FUA='-C<VED<FEV90!S8W-I:6]C=&P <V-S
M:7!R:6YT '1I;65O=71I;F< :6YT<G-E<G9I8V5D '-C<VED871A<&]R= !S
696YD=&]S8W-I &=E=&9R;VUS8W-I '-E
X 
end
SHAR_EOF
chmod 0644 Driver.uu ||
echo 'restore of Driver.uu failed'
Wc_c="`wc -c < 'Driver.uu'`"
test 28207 -eq "$Wc_c" ||
	echo 'Driver.uu: original size 28207, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= Makedev ==============
if test -f 'Makedev' -a X"$1" != X"-c"; then
	echo 'x - skipping Makedev (File already exists)'
	rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting Makedev (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'Makedev' &&
#!/bin/sh
# Makedev for ST-0X driver
#
# 9/16/90 Tin Le
X
if test ! `who am i | cut -f1 -d' '` = "root" ; then
X	echo "You must be root to do this!"
X	exit 1
fi
X
echo "Making device nodes for ST-0X driver..."
mknod /dev/rscsi0s c 9 15
mknod /dev/scsi0s b 9 15
mknod /dev/scsi0s0 b 9 0
mknod /dev/scsi0s0 b 9 1
mknod /dev/scsi0s0 b 9 2
mknod /dev/scsi0s0 b 9 3
X
echo "Created 4 nodes for 4 partitions, you can create more as needed."
echo "You will probably need to format your disk, run scsipart."
X
SHAR_EOF
chmod 0755 Makedev ||
echo 'restore of Makedev failed'
Wc_c="`wc -c < 'Makedev'`"
test 496 -eq "$Wc_c" ||
	echo 'Makedev: original size 496, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= README ==============
if test -f 'README' -a X"$1" != X"-c"; then
	echo 'x - skipping README (File already exists)'
	rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting README (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'README' &&
Readme for ST-01 SCSI driver for microport unix system V
X
X
Copyright (c) 13.6.1989 Tatu Ylonen
Copyright (c) 16.9.1990 Tin Le
X
X
I hereby allow use and distribution of this device driver, provided
that no charge is asked for it.
X
X
This is an SCSI device driver for Microport Unix System V/386 with
Seagate ST-01 SCSI adaptor.  (This probably works with other 386 unix
as well, but has not been tested).
X
This driver offers the following features
X  - can use almost any scsi disks
X  - no limit on disk or partition size
X  - each physical drive can partitioned in upto 15 partitions
X  - supports multiple drives (up to 7) on a single controller
X  - transfer rate four to six times that of the standard MFM disk
X    driver supplied by microport
X
The following drawbacks are known
X  - does not use dma, as the controller does not support dma
X  - character devices (raw io) do not work
X  - this is a disk driver only.  SCSI tapes have not been tested.
X  - you cannot boot from the scsi drive (I do not have boot source
X    code)
X  - lots of data movement is done at interrupt time (although this
X    tries to enable higher priority interrupts, like the serial ports)
X
I have used this for about an year with a Priam 738 (337 megabytes
formatted, 20 ms) drive.  Others have used this with Seagate ST227N
drives (64 megabytes).  I have had no problems with the driver (I have
never (after the initial creation of the driver) had a panic that I
could have associated with the driver (and only a couple of panics
altogether)).  The drive has been partitioned to three partitions:
10MB, 20MB and 307 MB.  (I have never had any problems with large
partitions).  I archieved the best performance when using 1024 byte
sectors on the disk.  The ST227N drive had some problems with 1024
byte sectors (the machine rebooting randomly during heavy disk
accesses); I have never had these problems with the Priam disk, and
the Seagate drives appear to work ok with 512 byte sectors.
X
The driver works with Dosmerge without any problems.
X
X
INSTALLATION
X
(Assuming you have installed the st01 adaptor).
(BTW, I removed the bios rom on the controller.  It does not work with
all drives.  Also, the machine boots faster.  This driver does not
need the rom and will wait for the drives to become ready if needed)
X
1. Create the directory /etc/atconf/modules/scsi, and copy all files to
X   that directory.
X
2. Check the config file for correct parameters (major device number,
X   interrupt number).  Major device number and the interrupt number
X   should both be exclusively used for the scsi driver.  (I have heard
X   that some optional driver conflicts with the default major number
X   here, 9)
X
3. Type make.
X
4. Add the line 'scsi,' in your system file (usually
X   /etc/atconf/systems/system.std).  Remember to back up your old system
X   file first.  Type mkunix (being logged in as root).
X
5. Back up your old /unix (move to, say, /unix.old, so that you can
X   boot it if something goes wrong).
X
6. Bring the system down (init 0).
X
7. Connect the scsi drive(s).  You will need the appropriate cables.
X   Remember to have terminators in the last drive (if you have only
X   one drive, you need to do nothing, as the terminators are probably
X   connected by default).
X
8. Reboot.  While booting, you should see a copyright message from the
X   driver, and a message identifying the manufacturer of the drive.
X   The message contains drive number and a manufacturer-specified text
X   (usually drive model).  If the drive has been partitioned, the
X   sizes of the partitions will also be shown.
X
X   If you get repeated messages "someone is sitting on the bus,
X   sending hard reset to scsi bus" (or something like that), it
X   probably means that the drive is not powered on (or that something
X   else is wrong with the connections).
X
X   If you get scsi timeouts when trying to use the disk (at a later
X   time, after formatting), it probably means that the interrupt
X   number is not set correctly.  Check config file and jumpers on the
X   card.
X
9. Create device i-nodes for the scsi disk.
X   I have the following i-nodes.  Here 9 is the major device number
X   (must match that in config file).  The minor device contains the
X   partition number in the lower four bits, and disk number in the
X   upper four bits.  Partition number 15 is reserved (contains the
X   entire disk, including the partition table).
X
X   The devices /dev/rscsi<drive>s and /dev/scsi<drive>s are mandatory.
X   In addition, you can create as many i-nodes for partitions as you
X   wish.
X
X   Here is a list of scsi-related i-nodes on my system.
X   
crw-------   1 root     sys        9, 15 Apr 22 03:13 /dev/rscsi0s
brw-------   1 root     sys        9, 15 Jan 14 06:01 /dev/scsi0s
brw-------   1 root     sys        9,  0 Jun 13 18:08 /dev/scsi0s0
brw-------   1 root     sys        9,  1 Jun 13 18:08 /dev/scsi0s1
brw-------   1 root     sys        9,  2 Jun 13 18:08 /dev/scsi0s2
X
10. Run scsipart.  The program asks for drive number.  Enter 0 (or the
X    number of your drive).  When the program asks whether to format,
X    answer yes, and confirm.  Formatting the Priam 337 megabyte disk
X    takes about half an hour.  In that time the driver does not print
X    anything.
X
X    You cannot specify your own defects.  The scsi drive will
X    automatically use all manufacturer-supplied defects, plus those
X    found during formatting.  (The scsi interface supports automatic
X    remapping of bad blocks even after formatting, but the driver does
X    not support this.)
X
X    When formatting is complete, the number of available disk sectors
X    is printed.
X
X    You can now define the partitions.  Note that partitions are
X    defined in sectors, while filesystems for mkfs are specified in
X    1024 byte blocks.  Thus, if you have 512 byte sectors, the lengths
X    of partitions should be twice the number of blocks.  The block 0
X    contains the partition table and cannot be used.  Otherwise, you
X    can freely create the partitions as you wish.  The first partition
X    in the table is number 0, the second number 1 and so on.
X
X    The partitions become valid when you exit scsipart.
X
X    I recommend that you try with several different interleave values
X    for optimal performance.  I got acceptable performance with 1024
X    byte sectors (use them if they work) and interleave 9 (sic).  That
X    was with an early version; the data transfer routines have been
X    optimized quite a bit since then (see the assembler hacks).
X
11. Create file systems on the partitions.  See mkfs(1M).  Remeber to
X    give the correct block size.  Specify that mkfs leave no
X    interleave (so it is easier to specify the interleave when
X    formatting).
X
12. Add the partitions to /etc/fstab.  My fstab looks like
X
/dev/scsi0s0 /tmp
/dev/scsi0s1 /u2
/dev/scsi0s2 /u
X
13.  Reboot.  The partitions should now get mounted and the system be
ready for use.  (Check /etc/rc2.d if they do not get mounted).  You
can label the file systems (see labelfs(1M) if you don't want to see
the messages from mount.
X
X
You can use the file systems just like any other file systems.  All
normal utilities work (except of course things like mkpart etc).  Fsck
and others work ok.
X
----------------
X
I can give only very limited support to anyone using this.  However,
I can be reached as
X
X   ylo@hupu.hut.fi
X
or my normal mail
X
X  Tatu Ylonen
X  Tunnelitie 14 c 13
X  00320 HELSINKI
X  Finland
X
X  Tel. +358-0-573290
X
Path: szebra!claris!apple!usc!zaphod.mps.ohio-state.edu!tut.cis.ohio-state.edu!pt.cs.cmu.edu!dsl.pitt.edu!pitt!cs.pitt.edu!km
XFrom: km@cs.pitt.edu
Newsgroups: comp.unix.i386
Subject: ST01 driver board notes
Message-ID: <7487@pitt.UUCP>
Date: 1 May 90 19:15:02 GMT
Sender: news@pitt.UUCP
Reply-To: km@cs.pitt.edu ()
Organization: Univ. of Pittsburgh Computer Science
Lines: 74
X
X
----------
X
Here is a picture of the card.
X
X  +--------------------------------------------+
X  I   ::::::::::::::::::::::::::::::::::::     I +--
X  I     (50-pin scsi connector)                I I
X  I                                         +----I
X  I                                         +----I
X  I   +----+                 +--+              I I  (mounting bracket)
X  I   I    I    +-----+      I  I              I I
X  I   I    I    I     I      I  I              I I
X  I   I    I    I     I      I  I              I I
X  I   +----+    +-----+      +--+              I I
X  I                                            I I
X  I      E  F           A  B                   I I
X  I       ..             ..    .            +----I
X  I        .             ..    . (0ws)      +----I
X  I         G           C  D                   I I
X  +-+  (intr en. jumpers) (bios addr j.)   +---+ I
X    I IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII I     I
X    +--------------------------------------+     I
X             (edge connector)                    I
X
Memory address
X
no jumpers installed       CA000H  (default setting)
pins C-D shorted           C8000H
SHAR_EOF
true || echo 'restore of README failed'
fi
echo 'End of  part 1'
echo 'File README is continued in part 2'
echo 2 > _shar_seq_.tmp
exit 0
-- 
+-----------------------------------------------------------------
 Station Zebra     ....!{claris,zorch}!szebra!tin
 Sunnyvale, CA      (408) 739-1520  24hrs Telebit+ 300-19200bps
                    Pub *NIX, Usenet and mail (no fee)