NNNNNN>np NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNO ! #@%`)+//3@5`79;=?A C@E`GIKMOQ S@U`WY[]_a c@e`gikm/s@u`wy{}@` ` @ o O ! #@%`)+//3@5`79;=?A C@E`GIKMOQ S@U`WY[]_a c@e`gikm/s@u`wy{}@` ` @ o AUTO ADAPTEC FMT ADAPTEC PAS  COPYFIX PRG DMA O FOLDR100PRG4HDUTIL PRGBHDUTIL RSC'B ICDBOOT PRG*= ICDFMT DAT-eICDFMT PRG1ICDFMT RSC!^AICDTIME PRG$oPARK PRG&q`CREAD ME )HXEBEC FMT+XEBEC PAS-$A67  LEES DITQt H. .. ICDBOOT PRG= `  `DICD Hard Disk Driver v1.5 ICD Hard Disk Auto-Boot Driver v1.5 /QRWBLBfPR`0/ y>C2`0/ yBC.`0/ yFC4EJ2k INм Nu,O:.EB2PHFE*P:E2PB>. .f0@Cޱ6. g(.| ov . g |ov(9.g "D$na3<.g3<.far`arJ@g(Syk"A CIHAI(A:Nu"9JgRgACP>//   XO$o 22tJog4<200<B2rGBH@B JAga:kQ <a2k |20|2NqJPBy>"9#JJ@Nu <:9gSjNu/ga0` Nu/Ha ?Ha0a0Nu@ @ e^@@0aNuH@??<?<NM\OLNu <Vм@&yfh  g g $fJAV@0<CB 1| IQB W <FV#W <!м@мV.JyRf//9N?< NA\O ?</?<1NANuJyRfB?< NA\O#NCa2` Ca&rpAQ3 # 3 3 3<9 HF<9 (< BvaJ@f*aa>aDaRy y g y fJy gRy3 Ry y fJyg>#r>#vB#~F+|br+|rv+|~+|`JyRf/9N?< NA\O.?//    XO$o22tJo g4<200<B2rGB0H@B JAga>kQ /a8k |20|2NqJPBy>//?< NA\  _N <:9gSjNuNu/,HNVC""n-I"np)=@0.rA^"n0.r1p @WCBd0.S@=@`0.J@f"nBQ"n E`"n0J@f0.rA^"n0.r1p @VCBd0.S@=@`"n$n0R@20.rA^"n0.r1p @WCBd0.S@=@`0.J@f~`p=@"n E"n0.r1p @f0.R@=@`"n$n0S@2"n0J@ftBn0.n_"n0.r1p @VCBd60.R@=@"n 0.$n2.t20.R@=@`"n 0.@`80.n_"n0.r1p @VCBd0.R@=@`0.noN^,_ _PN/,HNVBnHnHnN=n0.N^,_Nu/,HNV0.rAn"n E"`Hn"n / NN^,_ _\N/,HNV"n p)=@0.rA^"n 0.r1p @WCBd0.S@=@`0.J@f Bn`0.rAW"n 0.r1p:@WCBd p=@ nnZ"n 0.r1pa@m$0."n 2.t1BA`0."n 2.t1ARn`Hn?<Hzv?<N x0Hn?<HzZ?<N x2AHn?<Hz?<N0@Bd0.R@=@`0.n^=B0.N^,_ _XN@NUL:AXO:AXI:PRN:LST:CON:HaS@r VW?/LNuHaS@r VV?/LNuHaS@r VU?/LNuHabS@r VS?/LNuHa>S@r VR?/LNuHaS@r VT?/LNu# _0 @g "_J@jp`0"|p2 Ag $_JAjr`2$|r@g\HGe$4SBkQ4@SBpQ0"|` 4SBkQ4ASBrQ$|LJ@f pC$I/9NuH _024SBgQ@4BAAc/LNuHy^NRange error during set-operationH _0246@SCBgQAn68DCCc 0AgRB`/LNuH _0@CEHS@rIVW.J?/LNuH _0@CEHS@rIVV.J?/LNuH _0@CEHS@2FA_VW.J?/LNuH _0@CEHS@2FAYVW.J?/LNuH _0@274BAAc7V`tO>/LNuH _0@"_24BAAc1V`t>/LNuH _02S@AC2YQ/LNuH _02S@AC2YQ/LNuH _02S@AC2FAYQ/LNu _"_/) g g f0)k @e??<>3|NAXNu _ hNVf 0(gr"OD@Hd2S@k "Q` _"ye HyFNN## .f -|6`-|6 nNнf yNStack overruns heap _(N _0/Ho |Z3JyfXNX/#"|a "_a"|aJy g y9BgNA/ ?< NA\Nu09Nu _3NByNu *** *** Copyright 1986, CCD and OSS, Inc.,.B ( . (z            *  2xN6r     $"  ,*< * * , , 0 , "l 0   {$S50} Program Format_Routines; {~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Possible return codes from this module: 0 - format successfully completed. 1 - timeout while trying to configure 2 - timeout while trying to format 3 - could not format the hard drive (sense code in hi byte) 4 - could not configure the hard drive (sense code in hi byte) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~} Const Write_Dir = -1; Read_Dir = 0; Type MaxString = String [255]; Max_String = MaxString; Raw_Data = Array [1..1] of Byte; Sect_Data = Packed Array [0..511] of Byte; Word_Data = Array [0..255] of Integer; Com_Rec = Record Case Integer of 1: (data: array[1..6] of integer); 2: (buf: raw_data); end; dat_rec = record case integer of 1: (bytes: sect_data); 2: (words: word_data); end; Var RC,RC2 : Integer; command: com_rec; dataf,datag: dat_rec; SCSI, LUN, Heads, Cyls, Sectors, Red_Write, Pre_Comp, Land_Zone, Step_Rate, Reserved, Interleave : Integer; WkStr: MaxString; mybuff : dat_rec; {================================== external routines ===================================} Function DMA (var com_frame: raw_data; var data_frame: dat_rec; dir,blocks: integer; timeout: long_integer): Integer; External; Procedure Pterm (RC: Integer); GemDOS ($4c); Procedure Stop (RC, Sense: Integer); Var X: Integer; junk:maxstring; Begin X := 0; X := ShL (Sense, 8); { sense error in high byte } X := X | RC; { return code in low byte } Pterm (X); { goodbye... } End; {==========================================} Function Write_Drive_Configuration (Var Buffer: Dat_Rec): Integer; Begin Command.Data [1] := $15 + ($20*SCSI); { MODE sense } Command.Data [2] := $20 * LUN; Command.Data [3] := 0; Command.Data [4] := 0; Command.Data [5] := 22; { 22-byte frame } Command.Data [6] := 0; Buffer.Bytes [0] := 0; Buffer.Bytes [1] := 0; Buffer.Bytes [2] := 0; Buffer.Bytes [3] := 8; { length of descriptor list } Buffer.Bytes [4] := 0; Buffer.Bytes [5] := 0; Buffer.Bytes [6] := 0; Buffer.Bytes [7] := 0; Buffer.Bytes [8] := 0; Buffer.Bytes [9] := 0; Buffer.Bytes [10] := 2; { 512-byte blocks } Buffer.Bytes [11] := 0; Buffer.Bytes [12] := 1; { soft-sectored, fixed drive } Buffer.Bytes [13] := Cyls div 256; Buffer.Bytes [14] := Cyls mod 256; Buffer.Bytes [15] := Heads; Buffer.Bytes [16] := Red_Write div 256; Buffer.Bytes [17] := Red_Write mod 256; Buffer.Bytes [18] := Pre_Comp div 256; Buffer.Bytes [19] := Pre_Comp mod 256; Buffer.Bytes [20] := Land_Zone & $ff; Buffer.Bytes [21] := Step_Rate & $ff; (*** Buffer.Bytes [22] := 8; { fixed media } Buffer.Bytes [23] := Sectors & $ff; ******) Write_Drive_Configuration := DMA (Command.Buf, Buffer, Write_Dir, 1, 50000); End; Function Request_Sense: Integer; Var RC: Integer; MBuffer: Dat_rec; Begin Command.Data [1] := $03 + ($20*SCSI); Command.Data [2] := $20 * LUN; Command.Data [3] := 0; Command.Data [4] := 0; Command.Data [5] := 4; Command.Data [6] := 0; RC := DMA (Command.Buf, MBuffer, Read_Dir, 1, 45000); Request_Sense := MBuffer.bytes[0]; End; {==========================================} Function Format_Adaptec (Var Buffer: Dat_Rec): Integer; Var RC: Integer; Begin Command.Data [1] := $04 + ($20*SCSI); Command.Data [2] := $20 * LUN; Command.Data [3] := 0; Command.Data [4] := 0; Command.Data [5] := Interleave; Command.Data [6] := 0; Format_Adaptec := DMA (Command.Buf, Buffer, Write_Dir, 1, 45000000); End; Function Val (S: MaxString): Integer; VAR minus: boolean; i,n : Integer; BEGIN i := 1; WHILE (i < length(s)) AND (s[i] = ' ') DO i := i + 1; n := 0; IF length(s) >= i THEN BEGIN IF s[i] <> '-' THEN minus := false ELSE BEGIN minus := true; i := i + 1; END; WHILE (i <= length(s)) AND (s[i] IN ['0'..'9']) DO BEGIN n := (n * 10) + ord(s[i]) - ord('0'); i := i + 1; END; IF minus THEN n := -n; END; val := n; END; Begin Cmd_GetArg (1, Wkstr); SCSI := Val (Wkstr); Cmd_GetArg (2, Wkstr); LUN := Val (Wkstr); Cmd_GetArg (3, Wkstr); Heads := Val (Wkstr); Cmd_GetArg (4, Wkstr); Cyls := Val (Wkstr); Cmd_GetArg (5, Wkstr); Sectors := Val (Wkstr); Cmd_GetArg (6, Wkstr); Red_Write := Val (Wkstr); Cmd_GetArg (7, Wkstr); Pre_Comp := Val (Wkstr); Cmd_GetArg (8, Wkstr); Land_Zone := Val (Wkstr); Cmd_GetArg (9, Wkstr); Step_Rate := Val (Wkstr); Cmd_GetArg (10,Wkstr); Reserved := Val (Wkstr); Cmd_GetArg (11,Wkstr); Interleave:= Val (Wkstr); Land_Zone := Land_Zone - Cyls; RC := Write_Drive_Configuration (dataf); Case RC of -1 : Stop (1, 0); 2 : Begin RC2 := Request_Sense; Stop (4, RC2); End; End; RC := Format_Adaptec (dataf); Case RC of -1 : Stop (2, 0); 2 : Begin RC2 := Request_Sense; Stop (3, RC2); End; End; Stop (0, 0); { signal successful format } End. `` GEMDOS Time/Date Transfer Fix for COPY Ver 1.4 (C) 1987 ICD Inc. Jykp y01!H# fNo3,O.|0|gذ|@gBy yL/?# yNBy yL/?#J@Ns~.tAp g XB| fg1 yf3Jyk 949AYBjt g yfg??<><NA?<Hy*?<=NA>A?<?/?<WNA??<>NA3`B?< NA\#Ca:##+|P/9?< NA\O?</<"?<1NA/ga` NuH@??<?<NM\LNuR.  \$ ".    `B?< NA\O*ACP>//    XO$o22tJo g4<200<B2rGB0H@B JAga>kQ /a8k |20|2NqJPBy>//?< NA\  _N <:9gSjNuflock>wdcwdlwdcwdlxwdldmahi dmamid dmalow gpipltimeoutstimeout:labufDMAinput\tloopnltime_qdoneendrw_fdonexqd`8D(o,,IACZpQB?< NA\O/?< aNA\Of>a&>90B޼oBg/?<1 L090S@KNHz2?< NA\O |/?< NA\O?<?<NMXO?<?<LNAJNot enough memory to add folders. &x*k kJlA"gJ*XfpNu VV$V~ Hz?< NA\OpNuCan't add folders to this version of TOS /<?<NA\O?</<?<NNAPOJ@k~pA'g<.g<0kh< lb @`30g@y0p0/aXO |/?< NA\O/aXO |/?< NA\ONu/<K?< NA\O`p/<+?< NA\O`^\AUTO\FOLDR*.PRGCannot find \AUTO\FOLDRnnn.PRG Bad number of folders specified. CB 1| IQ!U*NAJA2 / H@<0H@fC<2fB/<$  `>p o"h#@#@#@,O8c.N//Bg?<JNA BbBy@N/,HNVlA-HN=^-np?<6HnHnxHnpHnlN6=nz=n|=n~=n=n 0.2.tHA=@0.2.tHA=@p=@p=@=n=n=n=n?<3HnHnxHnpHnlN6N^,_ _\N/,HNVA-HN=^/. ?<NN^,_ _XN/,HNVA-HN=^/. ?<NN^,_ _XN/,HNVA-HN=^/. N#N/. NN^,_ _XN/,HNVAJ-HN=^?. HnN!P/.NL/.BgN"=@/.N#N/.NV=n0.N^,_ _TN/,HNVnAJ-HN=^=n=n=n=n -nr?<+HnHnzHnrHnnN6=nz0.N^,_ _O NNV?<NAN^NuNV/.?<NAN^ _ONNV/.?<NAN^ _ONNV?</NAN^NuNV?<ONAN^NuNV?.?<>NAN^ _ONNV?.?. /. ?<BNAN^ _ONNV?.?. ?. /.?.?<NMN^ _O NNV?< NMN^Nu/,HNVA-HN=^09B(@P@3B, ."<//N>B"09B&@HҀ3B. .2<H2<H//N>B"3B0 .2<H3B23 B4ByB6HyB,"n/ Bg?</< N=@0.N^,_ _O N/,HNVA-HN=^09B(@@ 3B, ."<//N>B"09B&@HҀ3B. .2<H2<H//N>B"3B0 .2<H3B23 B4ByB6p=@HyB,"n/ ?XN=@0.R@=@0.J@W0.rA^ÄCBd=n0.N^,_ _O N/,HNVAn-HN=^09B(@V@3B,09B&@3B.ByB0ByB2p3B4ByB6HyB,HnBg?</<N=@p.=@0.N^,_Nu/,HNVAJ-HN=^BnBn nn0."n 2.AQ=@Rn`"n 0<4n3@N^,_ _XN/,HNVAH-HN=^C@O$OpQ?<N23F@N5N=| y@NN^,_Nu[3][Disk Failure!][Quit]/,HNVA-HN=^HyD8p/?<N=@0.J@gNXHyB8BgN=|V nn&0.2.tAD80AB8Rn`09B*29B*tAB80|AB809B*rH=@0.T@@AB820H-A .r2.VAAAB840HЂ-@HyB8N>HyB8p/?<N=@0.J@gNxHyD8/.?<N=@0.J@gNTHyB8?<Np=@ nn&0.2.tAD80AB8Rn`3BV3 BXHyB8NHyB8/.?<N=@0.J@gNN^,_ _XN/,HNVAX-HN=^p=@ nn>0.@AF>20Ad BgHyD8?<Bg?.N=@0.J@jNdHyD8N09F6R@3F6?<HyD8?<Bg?.NX=@0.J@jN"?<HyD8?<Bg?.N.=@0.J@jN=|Bn nn60.2.tAD80rAAD80.@ =@Rn`HyD8NH09F6R@3F6?< HyD8?<Bg?.N=@0.J@jNnRn`N^,_Nu/,HNVA-HN=^CO$Op QBgNFJ@jBnCO$OpQBgN=@CO$OpQBgNF=@0.J@jCZE.p-QN; Hn?Bp/.0. nU@?BgBgN(n/.0. nU@??<BgN(n .rrfT?<HyB8?<Bg?.N=@0.J@f./.0. nU@?BgBgN(n0.@rAF>1 .-@Rn`>N^,_ _\N/,HNVA-HN=^BgHnN!P/.?<N09FB@e/.?<?<BgN(n`(/.?<?<BgN(n/.?<BgBgN(nBnByB(ByB&0.F@29B(tB]C@dHyD8p/?<N=@0.J@fd3B*Bn0.rAlL09B*rAD80p@p@fp=@p=@`09B*@ 3B*0.R@=@`0.@e09B(R@3B(`J0.@e&?<N3F@N5N=| y@N/.?<BgBgN(n/.?<BgBgN(n/.N/.BgN"3F@09F@`/.?<N'rAJ@g p=@`Bn/.?<N'rAJ@g Nh`vN`Bnp=@0.F@2.tB]C@d6/.0.\@U@?N'rAJ@g p=@` 0.R@=@`0.@d?.?.N*NX`@ @b@0;N,/.N,N^,_Nu/,HNVA -HN=^N^,_ _TN/,HNVA-HN=^BgHn?<Bg?. Nf=@0.J@gN0p. @=@0.r. A=@p.@=@0.r. A=@0.rH=@p.@=@0.r.A=@=n0.2.AAS@=@=n=n0.nnBgHn?<?.?. N=@0.J@gNvBn nn,0.@A20|g0.@ABpRn`?<Hn?<?.?. NJ=@0.J@gNRn`dBn nn0.@ABpRn`0.R@=@0.nS@=@=n=n0.nn2?<Hn?<?.?. N=@0.J@gNRn`N^,_ _TN/,HNVA-HN=^?<HnN!P/.?<N0/.?<BgBgN(n/.?<BgBgN(n/.Nf/.BgN"3F@09F@`Bp=@ nn./.0.V@U@?N'rAJ@g ?.NHRn``@ @b@0;N/.NBN^,_Nu/,HNVAr-HN=^?<HnN!P/.?<NR/.?<BgBgN(n/.?<BgBgN(n/.N/.BgN"3F@09F@`C>E1p0QN; Hn?p=@ nn./.0.V@U@?N'rAJ@g ?.NRn``@ @b@0;N/.NN^,_Nu[ OK |Quit]Contained on the Drives|You Selected! ][3][CAUTION: This function |Destroys ALL Data |/,HNVA-HN=^Bn?<HnN!P/.?<BgBgN(n/.?<?<BgN(n/.?<BgBgN(n/.N/.BgN"3F@/.N09F@`$N`8p=@`.N`&Nn`S@ @b@0;N0.@dHN^,_NuA#@A@0B1|AAv01|N52J@j y@NN1BgHyF:HyF8HyF>HyF//    XO$o22tJo g4<200<B2rGB0H@B JAga>kQ /a8k |20|2NqJPBy>//?< NA\  _N <:9gSjNu o <BXQC <5Jog CF < oQ _\ON/ ?"9Xd/    XOE$p220C2rGBH@ JAga0kQ <a(k 20|2NqJPBy>LJ@Nu <:9gSjNu`,BooterICD(ICDBOOT SYSa8k4ak.a0/ B"2"n .r2N^,_ _O NNu/,HNVN=^=n-n ?<NHnHnHnHnN6N^,_ _\N/,HNVN=^?</. NN^,_ _XN/,HNVN=^0. ?BNN^,_ _TN/,HNVN=^?<BNdN^,_Nu/,HNVN=^?<BNFN^,_Nu/,HNVN=^p?BN(Bn?<zBg?<BgHnHnHnHnHnBgN7N^,_Nu/,HNVN=^p=@?<kHnHnHnHnN6N^,_Nu/,HNVN=^p=@?<kHnHnHnHnN6N^,_NuNu/,HNVN=^p.R@rAHnN8/?. N6=@0.N^,_ _ONN9>N:Nu/,HNVrN=^?<MHnHn~HnvHnrN6"n2"n2"n2"n 2=n~0.N^,_ _ON/,HNV0N=^0. rAg p=@2` Hn0Hn0Hn0Hn0Nl=@pd=@2=n p=@ n n0.@rA1Rn`p=@?.2Bg?< BgHnHnHndHnLHn4BgN7=n0.N^,_ _TN/,HNVN8:=@?.N80=n ?<fBg?<BgHnHn"n/ Hn"n/ BgN7?.N80N^,_ _O N/,HNV8N8:=@:?. N80?. HnlHna."|?$a&Hy>?<N6Jy@g _9N5BgNAg`NuNu/,HNV-n=n ?<4HnHnHnHnN6=n0.N^,_ _\N _#F#F#F#F#F^F#FvF0/3F^| H |?T"|F`H2H2H209F^ @pf2<`2<3Ff"<F0<NBNu _<#F#F#F#F"_#F:3E3_3_ 2/3yF Jg( yF8DSEk0 yF00 yF0Q?"<F0<sNBJ_`.:9FbH yFSEk0 yF00 yF0QNu _3FN09FNu _3FN09FNu _3F3FN _"_$_2F4FN _3F3FN _"_$_2F4FN _3FN09FNu _ RN _"_/) g g f0)k @e??<>3|NAXNu @Nu#: _ g@e@d 9:NHy:`Hy:N6pt`t _"_0gR@| e.G:$S" ghjebb"*f&"`v&A%S"`l&J`ذ|gb*|f8"9:g0$A#:`""9:g$A#:`"9:g $A#:"`"E@&R"$b Hy:N6pJgr"QHd2S@k"QN _"_0" g@e@d gR@ @mz @ e@E:"fB3@B$`\&A2+@ef "'I`F"3@B$`8$K`ư|f":#:` |f":#:` ":#:NHeap overruns stackPointer NILPointer not in heapHF _0"_e /LFNuHy=&N6p/B9F/|FNuHF _0 @f0"|FFp` "_J@jpEFr4@ BbBS@kQ/LFNuHF _4SBkt82$_rAdd0 @f0"|FFp` "_J@jp6ADb6CG0IS@k$eQ/LFNuHF _4k2SAk0"_p6B@bE0)CS@kQ/LFNuHF _2$_r0 @f0"|FFp` "_J@jp@kS@kv&J$IRC4(K Vg RQBg`?/LFNuHF _4kF2SAk>0 @f0"|FFp` "_J@jp6B@bEFSBkQ/LFNuString overflow _ hNVf 0(gr"OD@Hd2S@k "Q` _"y@e Hy=N6pN#H#G .f -|=`-|= nNнGf yHNStack overruns heapH?H _z gBjDRE"g8jDRE$6HBJBg8HAJAf,HBJBf$ւi EdD.` $HB8`B/L?HNu0NvDNHH|` HH| _z f0NjDRE"g`jDREdJgR(`DfxJg<`DxSDbb JgHA8`"tcRЀ`xeWJg(MdD.`B/LHNu09@Nu _3@NBy@Nu[3][][ Abort ]Copyright 1986, CCD and OSS, Inc. , ,, (28  *   R .^ 6$    $$  >&  *D  D("(*,(.66   "& &Lz (X*,\ & hpJ$*.444"X<"$>,$8(l*lr,&D0T>0,8&&,F.:FFFF*@4n(>2020nD(."F<".&$$6   D"2 T &( 0&  >        R  <   , FR ( *@ B @ B V  $ .[ BICD Auto-Boot SetupCopyright (c) 1987 ICD, Inc. Select Which Hard Drive To Boot None - Use FloppyLoad COMMAND.PRG?YesNoOKCancel Select Which DrivesOKCancelMark Bad Sectors Select Which DrivesOKCancelZero Hard Drive DirectoriesNone of the PartitionsFound on Your Hard Drive(s) Auto-Boot Error Can Support Auto-Booting!OK ZeroMapBootQuitZero Hard Drive DirectoriesSet hard disk auto-bootMap out bad sectorsReturn to DeskTop(C) 1987 ICD Inc.Hard Drive UtilitiesL^_}*$ 8@% V!CD E  F G H IJKL MNOPx" ' ' @$CDE FG H I J K L MNOP   ' @$CDE FG H I J K L MNOP   " /K `'z @)6R n           FV f `  `DICD Hard Disk Driver v1.5 ICD Hard Disk Auto-Boot Driver v1.5 /QRWBLBfPR`0/ y>C2`0/ yBC.`0/ yFC4EJ2k INм Nu,O:.EB2PHFE*P:E2PB>. .f0@Cޱ6. g(.| ov . g |ov(9.g "D$na3<.g3<.far`arJ@g(Syk"A CIHAI(A:Nu"9JgRgACP>//   XO$o 22tJog4<200<B2rGBH@B JAga:kQ <a2k |20|2NqJPBy>"9#JJ@Nu <:9gSjNu/ga0` Nu/Ha ?Ha0a0Nu@ @ e^@@0aNuH@??<?<NM\OLNu <Vм@&yfh  g g $fJAV@0<CB 1| IQB W <FV#W <!м@мV.JyRf//9N?< NA\O ?</?<1NANuJyRfB?< NA\O#NCa2` Ca&rpAQ3 # 3 3 3<9 HF<9 (< BvaJ@f*aa>aDaRy y g y fJy gRy3 Ry y fJyg>#r>#vB#~F+|br+|rv+|~+|`JyRf/9N?< NA\O.?NAN^ _ONNV?.?. /. ?<BNAN^ _ONNV?<NAN^NuNV/.?<NAN^ _ONNV?.?. /. ?<CNAN^ _ONNV/.?<ANAN^ _ONNV?</NAN^NuNV?./. ?<NNAN^ _ONNV?<ONAN^NuNV?.?<NMN^ _ONNV?.?<NAN^ _ON/,HNVA-HNBgN=@0.N^,_Nu/,HNVAX-HNp=@p. =@0.nn20.rA 0|l0.rA 0?NdRn`N^,_ _ON/,HNVA2-HNA O"Op?"QNh?< N?< NN^,_ _ON/,HNVA-HN09@P@3b ."<//N~"09@HҀ3d .2<H2<H//N~"3f .2<H3h3 jByl09A 0AeR09@A~20`$Byl`2p3l`&p3l` AbA2;NHyb"n/ Bg?</< N}=@0.N^,_ _O N/,HNVA-HN09@@ 3b ."<//N~"09@HҀ3d .2<H2<H//N~"3f .2<H3h3 jByl09A 0AeR09@A~20`$Byl`2p3l`&p3l` AbA2;NHyb"n/ ?XN}=@0.N^,_ _O N/,HNVAn-HN09@V@3b09@3dByfByhp3jBylHybHnBg?</<N}=@p.=@0.N^,_Nu/,HNVA-HNp=@p.=@0.nn"0.2.tA0ARn`p.R@rA0. rAfHnBgN=@`h0. rAfLHn?<Nl=@0.J@jHnBgNp=@`p/?.?<N-@=n`Hn?. N"=@0.N^,_ _ONNV/./. ?.?<?NAN^ _O N/,HNVA6-HN .ro?./."n / N=@`Bn0.N^,_ _O NNV/./. ?.?<@NAN^ _O N/,HNVA6-HN .ro?./."n / N=@`Bn0.N^,_ _O N/,HNVA-HNp-@Bp=@ n nv .-@ . -@ .JV .JWCBd .䀮-@`& .JV .JWCBd .䀮-@ .-@Rn`-n .N^,_ _PN/,HNVA>-HN0. raA\0. rzA_CBd0. @=@`=n 0.N^,_ _TN/,HNVA\-HNp=@"n p)=@0.nn2"n 0.H@$n 2.t2?NV"LRn`N^,_ _XN/,HNVA-HNp=@0.r. A]0.rA 0p @WCBd0.R@=@`Bnp. nm0.rA 0p-@g Bn`p=@0.R@=@0.r. A_0.rA 0?Hzl?<Nt0@Bd.0. 2.tA 0Br0A=@0.R@=@`0.@d 0.D@=@=n0.N^,_ _ON/,HNVA-HNp=@0.r. A]0.rA 0p @WCBd0.R@=@`Bp. nm0.rA 0p-@g Bn`p=@0.R@=@0.r. A_0.rA 0?Hzz?<Nt0@Bd< .r //N"0.tA 0H҂p0H-A0.R@=@`0.@d .D-@-n .N^,_ _ON/,HNVA.-HN V0(R@ V1@ V"h V0(2. N^,_ _TN/,HNVA-HNBn0.J@j?<- NN0.D@=@=|'p=@0.rAo^0.2.H=@0.J@V0.F@@Bd0.r0A? NN:Bn0.2.HH@=@0.r H=@`0.J@f ?<0 NN"n 0.@N^,_ _\N/,HNVA.-HN V0(R@ V1@ V"h V0(2. N^,_ _TN/,HNVA-HNBn .Jj?<- NN .D-@-|;p=@ .rot .".//N~"=A0.J@V0.F@@Bd0.r0A? NN0Bn .".//Nr"-A .r //N~"-A`0.J@f ?<0 NN"n 0.@N^,_ _PN/,HNVA.-HN/. HnNAO"Op?"QNN^,_ _XN/,HNVA.-HN/. HnNAO"Op?"QNN^,_ _XN/,HNVA`-HN"n p)=@"n 0.r1p @W0.rA^CBd""n $n p*S@@0.S@=@`N^,_ _XN/,HNVA-HNp=@BnBnBn?.p/HnN=@0.R@=@0.rAfnp.r Af p=@`R0.n ]p.r AVCBd"0.R@=@"n0.r.`0.|op=@`p=@p=@Bn0.@dR"n0.@"n/ N0.N^,_ _PN/,HNVA-HN?< HnN~/.?<A O"Op?"Q?<?<NN/.?<A O"Op?"Q?<?<NN/.?<A O"Op?"Q?<?<NN/.?<A O"Op?"Q?<?<NN/.?<BgBgN/.N/.BgN"3/.N/.NN^,_ _ON/,HNVAx-HN?< HnN~/.?<BgBgN/.?<BgBgN/.N~/.BgN"=@/.N0.rAf p=@`Bn0.N^,_Nu/,HNVA-HN?<HyrN~/9rN /9r?<CO$OpQ?<BgNN/9r?<CO$OpQ?<BgNN/9r?<CZO$OpQ?<BgNN/9rBg?<?9?9?9?9N?<NN^,_Nu /,HNVA-HN/.HnNn/9r?<AO"Op?"Q?<BgNN/. HnN:/9r?<AO"Op?"Q?<BgNN/9r?<?<?9?9?9?9N/9r?<?<?9?9?9?9NN^,_ _PN/,HNVA-HN?<HyrN~09@d8Hyr?<?< N3Hyr?<09@??< Nj/9rN /9rBg?<?9?9?9?9N?<NN^,_Nu/,HNVA\-HN?<HyrN~/9rN /9rBg?<?9?9?9?9N?<NN^,_Nu/,HNVA\-HN?<HyrN~/9rN /9rBg?<?9?9?9?9N?<NN^,_Nu/,HNVA-HN?<HnN~/.?< BgBgN/.HnN/.?< AO"Op?"Q?<BgNN/. HnN/.?< AO"Op?"Q?<BgNN/.ND/.BgN"3/.NN^,_ _PN/,HNVA-HN0.J@g?<HnN~/.?<BgBgN/.?<AO"Op?"Q?<BgNN/. HnN/.?<AO"Op?"Q?<BgNN/.N~/.BgN"3/.NN yNN^,_ _ON/,HNVAN-HN?<HnN~/.?<BgBgN/.N/.BgN"=@/.NN^,_Nu/,HNVAN-HN?<HnN~/.?<BgBgN/.Nݪ/.BgN"=@/.NN^,_Nu/,HNVAP-HN?< HnN~/.?<BgBgN/.NL/.BgN"3/.NN^,_Nu/,HNVA -HNBgN/9rNN^,_Nu/,HNVA@-HN ."<B@//N~"=A .2.H$<B@//N$-@ .2<'H//N~"=A?."n / N?.HnN"n p)rAl6"n N\?< ??<?9?9?9?9N/9n?<??<?9?9?9?9N/9n?<@?<?9?9?9?9N/9n?<A?<?9?9?9?9N/9n?<B?<?9?9?9?9N/9n?<C?<?9?9?9?9N/9n?<D?<?9?9?9?9N/9n?<E?<?9?9?9?9NN^,_Nu/,HNVA-HN/9n?<?<?9?9?9?9N/9n?<?<?9?9?9?9N/9n?<?<?9?9?9?9N/9n?<?<?9?9?9?9N/9n?<?<?9?9?9?9N/9n?<?<?9?9?9?9N/9n?<?<?9?9?9?9N/9n?<?<?9?9?9?9N/9n?<?<?9?9?9?9N/9n?<?<?9?9?9?9NN^,_Nu/,HNVA8-HNBn nn /9n0.Z@?BgBgNRn`N^,_Nu/,HNVA:-HNBn nn"/9n0.Z@??<BgNRn`N^,_Nu/,HNVAX-HNBn nn@/9n0.Z@?N2rAJ@f/9n0.Z@?Bg?<NRn`N^,_Nu/,HNVA:-HNBn nn"/9n0.@>?BgBgNRn`N^,_Nu/,HNVAR-HN"np)n l6"nN\$n/ ??0HnN0Hn?<N~/9n?<+AO"Op?"Q?<BgNN0.@A?0HnNHn?<N2/9n?</AO"Op?"Q?<BgNN0.@A^?0HnNHn?<N/9n?<1AO"Op?"Q?<BgNN0.@A?0HnNLHn?<N/9n?<3AO"Op?"Q?<BgNN0.@A~?0HnNHn?<NN/9n?<5AO"Op?"Q?<BgNNN^,_Nu/,HNVA-HN=y0.@A ?0HnNHn?<N/9n?<7AO"Op?"Q?<BgNN0.@A?0HnNDHn?<N/9n?<-AO"Op?"Q?<BgNNN^,_Nu/,HNVA-HNBp-@B09rAo209@A20H-A09@A 20H-A09rAo=y0.@A20H-A0.@A>20H-A .".//N" .//N -@ .r -@/.HnN/9n?<AO"Op?"Q?<BgNN#N^,_Nu/,HNVA2-HNp=@ n n0.@AtBRn`N^,_Nu/,HNVA>-HN/9n?<C,O$OpQ?<BgNNBN^,_Nu 0.00/,HNVA-HN"n p)`"n E`"n N\?<0??<.?<"n / ?0. A C IO$Op?$Q?<?<NN/9n?<?0. R@A C IO$Op?$Q?<?<NN/9n?<@0. T@A C IO$Op?$Q?<?<NN/9n?<A0. V@A C IO$Op?$Q?<?<NN/9n?<B0. X@A C IO$Op?$Q?<?<NN/9n?<C0. Z@A C IO$Op?$Q?<?<NN/9n?<D0. \@A C IO$Op?$Q?<?<NN/9n?<E0. ^@A C IO$Op?$Q?<?<NNN^,_ _TN/,HNVA8-HN/9n?. VHhNp V(r0Am VAO"Op?"QNӺ29AApl09R@309/ VAO"Or?"QNr" A81/9n0. R@? VHhN09/ VAO"Or?"QN&" A:1/9n0. T@? VHhN09/ VAO"Or?"QN" A<1N^,_ _TN/,HNVA-HN/9n?. CO$O?<BgNN/9n0. R@?CZO$O?<BgNN/9n0. T@?C*O$O?<BgNNN^,_ _TN______/,HNVA:-HNByp=@?<HynN~/9nN /9n?<0Bg?<N/9n?</Bg?<N0.@e?< NN?< NN?< NN?< NN?< NN?< NN?< NN?<" NN?<& NN?<* NN|?<6 NNr?<: NNh?<> NN^?<B NNT?<F NNJ?<J NN@?<N NN6?<R NN,?<V NN"?<Z NN/9nBgN"=@Bn?< NN?< NN?< NN?< NN?< NN?< NNz?< NNp?<" NNf?<& NN\?<* NNR?<6 NNH?<: NN>?<> NN4?<B NN*?<F NN ?<J NN?<N NN ?<R NN?<V NN?<Z NN/9nN0.r/AW09rdA^ÄCBdN^,_Nu/,HNVA-HN0.@At"0Jf2 V/(?. CO$O?<BgNN`f0.@At/0 VHhN0?<.?< VHh?1N\Hn?" A1N\Hn??0HnNN\Hn?200<H$09@A>200<HHA%09@A20&09@A^200<H(09@A^200<HHA)09@A200<H*09@A200<HHA+p,p-p.p/09@A~20`&p'`2p'`&p'` AbA2;Np-@p=@ n nd0.@At"0poD0.rAl0.S@ @=@`0.[@ @V=@0.rAn0.R@rGAn0.T@rEAn0.V@rMAn0.@At-p .2<H//N~"-A .rM//N~"p€=A0.|l=|0.rH=@ .2.HS=@0.2<HR@=@0.2.AA=@0.rH=@0.R@2.AA=@-np=@-n/.N"@dBn .R-@ .".4.H҂f0.@e .R-@0.@d .".̐-@-n0.P@r.An0.@ r.An0.@ r.An0.@ r.An-n-n0.X@r.An0.Z@r.An0.\@r.An0.^@r.An .Ю-@Bn nn0.rAnRn`pIppCqpDrpIspNtpCup1vp.wp1xpypzp{p|p}p~0.2<HH@0.2<H .2<H//Nr" .2<H//N~"0<0.2<HH@0.2<H09@A200<HHA09@A200<H09@A200<HHA09@A200<HpHyn/.?<NP3?9CFO$OpQ/.NĖBn nn0.rAnRn` .R-@ .2.HЁ2.AHЁ-@ .r m*Hyb/.?< N3 .r Ё-@`&Hyb/. .?N3-n?9C~O$OpQ/.N .mv .2.HЁ2.AHЁR-@p=@=y0.nn0.@A-p .\ .".Үа]CBd .-@ .r//N~"-A .T-@ .2<H//N~"-A .ЮR-@ .2<H//Nr"-AHyn/.?<N83?9CVO$OpQ/.N® .@An1Hyn/.?<N3?9CO$OpQ/.N` .2.HЁ-@Hyn/.?<N3?9CO$OpQ/.N .@An1Hyn/.?<N3?9CvO$OpQ/.NRn`(Rn`Hynp/?<N43?9C*O$OpQp/NzN^,_NuReadingWriting/,HNVA-HN09@A=pBn0.S@=@0.nn0.@rA 1Rn`BnBn0.@A 20JAjH0.@A 10.y=@0.nm0.n=@0.R@=@`0.R@=@0.nfBn0.nfN^,_Nu/,HNVAD-HN09@A20H-A09@A20H-A09@A 20H-Ap=@=y0.ذnn0.A820H-A0.A:20H-A0.A<20H-A .".$.//N$Ђ-@ .".//N"-A .29AA40H//N~$=B .2.AA 40HЂ-@/.N Rn` N^,_Nu/,HNVAj-HN0. rAb0pG@W0. R@rAb0pE@WC0. T@rAb0pM@WCBd p=@`Bn0.N^,_ _TN/,HNVA-HNp=@Hybp/?<N=@0.J@fBnBn nn(0. @W? NN@dp=@Rn`0.@e6Bn nn(0. @? NN@dp=@Rn`0.@dd?< HnN~/.?<BgBgN/.?<BgBgN/.N/.BgN"=@/.N 0.rAfBn0.N^,_Nu/,HNVA-HN/. N@dCO$Op QN/. Np=@0.@A"0 g0.R@=@`0.A8C-IC:O$OpQN"n0H/N^C O$OpQN^"n0)H/N4CO$O p QN4"n0)H/N`CO$Op QN/. N . 29AA40H//Nr$=BBn0.@A 20ng0.R@=@`0.29AA29AA40rH…B=@ . 29AA40H//N~$-B .29AA40H//Nr$=B .29AA40H//N~$=BCO$OpQN0.H/NCnO$OpQN0.H/NC20H-A09@A 20H-A .".//N"30.rA=@0.H=@092.IA309@A20H-A .2949BA Ēp H//N"#?.HnNN\Hzr?< NnHn?09R@=@ nn(/9n0.S@@>??<?<NRn`09rAl<09R@=@ nn&/9n0.S@Z@??<?<NRn`09@d/9nBgN"=@`/9nBgN=@ByBnBy?.N:?.Hz?<Nt0@d0.2.[AA3?.Hz?<Nt0@dF0.2.AA309AHp?@dBn0.rNAf`/9nN/9nNp3p=@ByN@dN:NN@dNBgHynN~/9nN`@ @Cb@0;N2222lll>..l0.rOAf/9nN/9nNN^,_Nu?1 SASI(none)SCSIAJ#A0B1|A01|NJ@kBgHyHyHyHyNN`309J@f4CO$OpQBgN3N yNp309rAfByCO$O p QN}@e4CzO$OpQBgN3N yNN@Np3C6EN N@NNBNN HyN*BgNA[3][No Resource File!][Quit]icdfmt.rsc[3][Med/High Res Needed!][Quit]B?< NA\O*ACP>//    XO$o22tJo g4<200<B2rGB0H@B JAga>kQ /a8k |20|2NqJPBy>//?< NA\  _N <:9gSjNuNu/,HNVnNAL-Hp. R@rA Hn N-@r?<nHnHnzHnrHnnNZ0.zJ@V=B0.N^,_ _ON/,HNVnNAD-H=n=n ?<pHnHnzHnrHnnNZ0.zJ@g -nn`B .N^,_ _XN/,HNVNA-H"n / Bg?.Nz"_"N^,_ _\N/,HNVNA-H"n / Bg?.NF"_"N^,_ _\N/,HNVtNA -H?<oHnHnHnxHntNZN^,_NuNu/,HNVtNAV-H=n=n=n=n=n=n=n=n=n ?<3HnHnHnxHntNZN^,_ _ON/,HNVnNA@-H0. J@jBn =n -nr?<2HnHnzHnrHnnNZ=nz0.N^,_ _\N/,HNVNAp-H/.BgHnHnHnHnNBgBgBgBgBg?.?.?.?.N/.Bg?<?.?.?.?.N/.?. N(=@0.N^,_ _\N/,HNVNAB-H/. BgHnHnHnHnN?<BgBgBgBg?.?.?.?.NRN^,_ _XN/,HNVtNA&-H-n x?<6HnHnHnxHntNZN^,_ _XN/,HNVNAR-HBn"n0.r1JAg*"n 0.R@$n2.t20.R@=@`"n 0.@N^,_ _PN/,HNVNAz-H"n Jfp. R@?"n / N>p=@p. =@0.nn&"n $Q0.S@2.tA 0Rn`"n $Qp. rN^,_ _ON/,HNVNAv-H"n0.-I"n0)rAW"n0)r AWÄC"n0)rAWÄCBd("n / AO"Op?"QN`"n0)rAW"n0)rAWÄC"n0)rAWÄC"n0)rAWÄCBd"n$i -J"n0)rAW"n0)rAWÄCp."ni\CBd"n0)S@@"n Jf"np.R@3@"n/ AO"Op?"QN"n0)rAW"n0)rAWÄCBd"n3n "n3n N^,_ _O N/,HNVNAT-H"n0.-I"n0)rAW"n0)rAWÄCBd"n$i /"n / N`N^,_ _O NNu/,HNVxN=n=n -n|?<(HnHnHn|HnxNZN^,_ _PN/,HNVxN=n -n|?<rHnHnHn|HnxNZN^,_ _\N/,HNVxN-n|=n=n=n=n=n=n ?<*HnHnHn|HnxNZN^,_ _ON/,HNVN"n0. =i 0.N^,_ _\N/,HNVxN-n|=nBn=n=n=n=n=n0. rA=@?</HnHnHn|HnxNZN^,_ _ON/,HNVN/.?.HnHnHnHnN/.?.?.?.?.?.?.?. NDN^,_ _O N/,HNVN"n0. =i0.N^,_ _\N/,HNVN"n0.3n N^,_ _PN/,HNVrN-nv=n=n=n=n ?<+HnHn~HnvHnrNZ=n~0.N^,_ _O NNu/,HNVtN/.?."n/ "n/ N"n0.-It"n$nt2"n $nt2"nt0) rAJ@g:"n$n0W@2"n$n0W@2"n$n0\@2"n $n 0\@2N^,_ _ONNu/,HNVxN=n-n|?<,HnHnHn|HnxNZ"n2"n 2N^,_ _ONNu/,HNVtNAD-H=n=n=n=n=n=n ?<iHnHnHnxHntNZN^,_ _O N/,HNVtNAL-H=n=n?<hHnHnHnxHntNZ"n2"n2"n2"n 2N^,_ _ON/,HNVNA*-H?.?<"n/ "n/ "n/ "n / N`N^,_ _ON/,HNVNA*-H?.?<"n/ "n/ "n/ "n / NN^,_ _ON/,HNVNA*-H?.?< "n/ "n/ "n/ "n / NN^,_ _ON/,HNVNA*-H?.?< "n/ "n/ "n/ "n / NN^,_ _ON/,HNVNAP-H?. N0. rAfBgBgN`(?. HnHnHnHnN?.?.NN^,_ _TN/,HNVNA&-HBg?< HnHnHnHnN=n0.N^,_Nu/,HNVNA-H?. ?< BgBgBgBgNNN^,_ _TN/,HNVtNAl-H0.J@W0. J@WÄCBdBgHnHnHnHn N=n=n=n=n=n ?<eHnHnHnxHntNZN^,_ _O N/,HNVtNA&-H=n ?<fHnHnHnxHntNZN^,_ _TN/,HNVNA"-H?.?<?.?.?.?. NJN^,_ _O N/,HNVNAH-H"n $n p*R@r"n / HnHnN.?.?<?.?.BgBgNN^,_ _\N/,HNVNAH-H"n $n p*R@r"n / HnHnN.?.?<?.?.BgBgNN^,_ _\N/,HNVlNA-H0.J@W0. J@WÄCBdBgHnHnHnHn N=n=n=n=n=n ?<dHnHnzHnrHnnNZ=nzl0.lrAg?.l"n/ N=nl0.N^,_ _ON/,HNVtNA&-H=n ?<gHnHnHnxHntNZN^,_ _TN/,HNVnNA2-H=n=n ?<jHnHnzHnrHnnNZ=nz0.N^,_ _XN/,HNVtNAd-H=n&=n$=n"=n =n=n?<lHnHnHnxHntNZ"n2"n2"n2"n 2N^,_ _ONNu/,HNVN .R-@"n ."<//N~"2"n .r2N^,_ _O NNu/,HNVN=n-n ?<NHnHnHnHnNZN^,_ _\N/,HNVN?</. NN^,_ _XN/,HNVN0. ?BNN^,_ _TN/,HNVN?<BNdN^,_Nu/,HNVN?<BNFN^,_Nu/,HNVNp?BN(Bn?<zBg?<BgHnHnHnHnHnBgNN^,_Nu/,HNVNp=@?<kHnHnHnHnNZN^,_Nu/,HNVNp=@?<kHnHnHnHnNZN^,_NuNu/,HNVNp.R@rAHnN/?. N=@0.N^,_ _ONNzN@Nu/,HNVrN?<MHnHn~HnvHnrNZ"n2"n2"n2"n 2=n~0.N^,_ _ON/,HNV0N0. rAg p=@2` Hn0Hn0Hn0Hn0Nl=@pd=@2=n p=@ n n0.@rA1Rn`p=@?.2Bg?< BgHnHnHndHnLHn4BgN=n0.N^,_ _TN/,HNVN=@?.N=n ?<fBg?<BgHnHn"n/ Hn"n/ BgN?.NN^,_ _O N/,HNV8N=@:?. N?. HnlHnS@r VR?/L NuH aS@r VT?/L Nu#! _0 @g "_J@jp`0 "| p2 Ag $_JAjr`2 $| r@g\H! Ge$4SBkQ4@SBpQ0"|` 4SBkQ4ASBrQ$|L! J@f pC$I/9!NuH! _024SBgQ@4BAAc/L!NuHyNRange error during set-operationH! _0246@SCBgQAn68DCCc 0AgRB`/L!NuH! _0@CEHS@rIVW.J?/L!NuH! _0@CEHS@rIVV.J?/L!NuH! _0@CEHS@2FA_VW.J?/L!NuH! _0@CEHS@2FAYVW.J?/L!NuH! _0@274BAAc7V`tO>/L!NuH! _0@"_24BAAc1V`t>/L!NuH! _02S@AC2YQ/L!NuH! _02S@AC2YQ/L!NuH! _02S@AC2FAYQ/L!Nu _"_/) g g f0)k @e??<>3|NAXNuH!.p`:H!.p`.H!.p`"H!.p`H!.p` H!.p _/fJ/ gLJ/kJ`L/ fJkB`</jJk2`,gbJk&` Jk`"eb// ebr`r`rAV ?/L!.NuH!.v` H!.v _ `H!.v` H!.v _0HJ[fBBg`,j Dj4<` 4<ЀkSB`Jf].B/BJg 2/.?o /@?A /L!.NuH!.v` H!.v _ [2Jkp`&4<cH@j JgR@kJ@kJgD@?/L!.NuH!.v` H!.v _ [2Jkp`$4<cd JgRkJk~JgD//L!.NuJ/ goNuNuH!. _?///` H!. _0/2// Jv/ 8://N~/DD?DBoJgJgC|k?>BGHGv8ބdRC8ބdRC>HGvކdRC8ބdRCHGv48ބBޅB:>HG8ކkE߇SDkBg|d RdRDUJg( DbRD ME \/L!.NuBBo `H!. _0/2// v/ 8://~/?DD?DBo 8JgJgG|HD8H@0zr)`рe efef<څ߇QgRCgڼd RGdSCJCkD|blo/EC \/L!.NuoH!. _p2/g/ f/W?o `ֲ@e:f$/&e&f // d*B6//J/ k`(&// S@Q`&// `R"/?/[4JfFӃddRdRR/eJd RdRd`/AG o Jk`z0H*kS/JkFft grkRBjIHA~`( dtHAI.kRBҁjBG` BBRBӁj/e2/AG o Jk\/L!.NuH!. _0 @&b(CC/)?/L!.NuHy`HyL!.N Hz@CPt$> nk(:C@hԥ*5 c_1ɿ1.Ź^ k:v #-xŬX&x2n)h? SYQa@%oNˏ'?9x!7I|o|@Eŭ+E75vV 9@{pvP *** Floating point overflow *** *** Floating point division by zero *** Nu# _ ged 9NHy`HyNt`t _"_0gR@| e.G$S" ghjebb"*f&"`v&A%S"`l&J`ذ|gb*|f8"9g0$A#`""9g$A#`"9g $A#"`"E&R"$b HyNJgr"QHd2S@k"QN _"_0" ged gR@ @mz @ e@E"fB3@B$`\&A2+@ef "'I`F"3@B$`8$K`ư|f"#` |f"#` "#NHeap overruns stackPointer NILPointer not in heapH!` _0"_e /L!`NuHybN/B9!/|!NuH!` _0 @f0"|!^!^p` "_J@jpE!r4@ BbBS@kQ/L!`NuH!` _4SBkt82$_rAdd0 @f0"|!^!^p` "_J@jp6ADb6CG0IS@k$eQ/L!`NuH!` _4k2SAk0"_p6B@bE0)CS@kQ/L!`NuH!` _2$_r0 @f0"|!^!^p` "_J@jp@kS@kv&J$IRC4(K Vg RQBg`?/L!`NuH!` _4kF2SAk>0 @f0"|!^!^p` "_J@jp6B@bE!SBkQ/L!`NuString overflow _ hNVf 0(gr"OD@Hd2S@k "Q` _"ye HyNN#"#" .f -|`-| nNн"f y"NStack overruns heapH?" _z gBjDRE"g8jDRE$6HBJBg8HAJAf,HBJBf$ւi EdD.` $HB8`B/L?"Nu0NvDNH"|` H"| _z f0NjDRE"g`jDREdJgR(`DfxJg<`DxSDbb JgHA8`"tcRЀ`xeWJg(MdD.`B/L"Nu09Nu _3NByNu[3][][ Abort ]Copyright 1986, CCD and OSS, Inc. , ,, (28,2,&H0PRB B R  P  F*nH   "*   "* .pPVpzBBNBHBBt(((( *F &&&  """           22 &2 $  < * < *"""""""" """" """"V   """","&&&&""""" " " " " "" "$"&&"0H&$&"&,( *6&<& @: $p""""""""   ("""""""" .( ( ($"**&* 6.*$ " "00F "24N6 6 6 6 6 6<.6 6 6 6 6 62 ":hN$   .   >L"* 8D RD$( * 4* 4J.j 8 D ,$8(l*lr,&D0T>0,8&&,F.:FFFF*@4n(>2020nD(."F<".&$$6   D"2 T &( 0&  >             $"  ,*< * * , , 0 , "D z  f H F  J  <   , FR ( *@ B @ B V  !PP4$A8QA Hard Drive Type Partition Sizes________________________________________________________________________________________________________________________________________Drive@ __.__9999____@ __.__9999__@ __.__9999__@ __.__9999-------------------- Excess:______Avail:______MB-------------------- Calculate SizeHard Disk FormatterCopyright (c) 1987 ICD, Inc.v1.11 14-Aug-87Heads.............__Cylinders.........____Sectors / Track...__Reduced Write.....____Write Pre-Comp....____Landing Zone......____Step Pulse Rate...__Reserved Tracks...__-------------------------Interleave........__ Controller Type________________________________________________________________________________________________________________________________________ Hard Disk ________________ Controller________________ Drive NumberFORMATABORT_LUN:_:____Hard Disk FormatterCopyright (c) 1987 ICD, Inc.------------------------------ Loading Hard Drive Data... Error!! The Hard Disk Data FileICDFMT.DATIsn't On The Disk...OK Partition Error! You have allocated more space thanis available on your hard drive!Please change your partition sizesto fall within the available space.Available:Requested:__________________OK Interleave Error! You have specified an illegalinterleave. Valid values arefrom 1 - (sectors per track).Please change your interleaveto fall within the valid range.OK Drive Selection Error! You must choose a hard drive anda controller before attemptingto perform a format.Please select a hard driveand a controller.OK Partition Sizing Error! You have not chosen any sizes forthe partitions on your hard drive.Please enter sizes for each partition.OKFormatting... Now Verifying Sectors... On Sector:______Total Sectors:______Bad Sectors Encountered:_____Hard drive formatsuccessfully completed!OKThis is the last chance to change your mind!Proceeding past this screen willdestroyanydata that is on this hard drive!!----------------------------------------------Drive type:_________________Controller type:_________________Format drive:Logical Unit:__C:_____PartitionG:_____K:__________D:sizesH:_____L:__________E:-----------I:_____M:__________F:J:_____N:_____FORMATAbort Error! ________________________________________________________________________________________________________________________________________________________________OKThe drive you have selectedis not responding.Please check all connections.CancelRetry The drive you have selected appears to contain valid data.Continuing on will destroy alldata on this drive.Are you sure you wish to continue?Yes, I'm SureAbortMapping out bad sectorsand laying down directories... Partition Error! Each individual partition sizemust be within the range of1.00 - 16.00 Meg.to fall within the available space.OKPlease change your partition sizes A Fatal Error Has Occurred! Operation:____________Sector:_______OK Head Cylinder Offset @ __99@ ____9999@ _____99999@ __99@ ____9999@ _____99999@ __99@ ____9999@ _____99999@ __99@ ____9999@ _____99999@ __99@ ____9999@ _____99999@ __99@ ____9999@ _____99999@ __99@ ____9999@ _____99999@ __99@ ____9999@ _____99999@ __99@ ____9999@ _____99999@ __99@ ____9999@ _____99999Enter Any Known Bad Sectors BelowOKMORE Head Cylinder Offset @ __99@ ____9999@ _____99999@ __9@ ____9999@ _____99999@ __99@ ____9999@ _____99999@ __99@ ____9999@ _____99999@ __99@ ____9999@ _____99999@ __99@ ____9999@ _____99999@ __99@ ____9999@ _____99999@ __99@ ____9999@ _____99999@ __99@ ____9999@ _____99999@ __99@ ____9999@ _____99999?>>>>>>>??>>>>>>>? t FXYZlmn ").1238?bijryz.12FKL`efz /01CDEWXYklm  ^{|} |  Jef   * , - . 0 1 5 ; < J P Q U [ \ ] c d q w x |           )  > ?) @ i j) k )    2 3            ! $ ) / 4 : A G J N Q V \ a g n t w { ~          "(+/27=BHOUX\_djou| !#').49?FLOSV[aflsy|  '-047<BGMTZ]adiotzVN$6;4$  Pl    ! 8 0 Lh @@  DY k, { ~ @"@$##@!"@%&'H! ;(:  )*d+,-./301M23g456 78(9:@ '@D <@ = F>E ?`@|ABCDE=$G: H@ JII@! H@K@: L:M\:N9OP)VQU9R@xS@ T@UP@`" B"? (     '  + " "B#   f  q   <  ' *X  ' 'G *tg   ' *  !,"O&'v ! y  $      %  '47,K l't/x !/     8      T p+ 41 / 2 =  G' R e h  n#!"'" y $4% &  )'(( &P,*+'+ )l-. 1/00 .23'3 1566 4% , ))0)L)'  !     ' ( h   4 S  g" " % )  +    '  9 # ]  ` "%    ' YC     , H  d      ( D`|   !   $ @%"$ #\$x !)&( '( %-*, +, )<.!1/00. 524%34 1968%7X8t 5=:<%;< 9A>@%?@ =8EBD%CTDp AIFH%GH EMJL% KL  I 4QNP% O PP l M URT% S T Q YVX% W X! U!0Z\% [!L\!h Y(!!)*X*,,-..H//45P56778``ICD ST Clock Driver v1.3  yr01!H#r fNo0|+g|-gp yj`, yr01!H#r fNo0|gh yn# yrL/?#r yN yrL/?#rNsa0/a*a`aH@0/H@aa`l /aap`H.C^EdGrx1|02JAfH Af|P H4H@B@RAQCaLNuK|LEBB*g@QNu/.afk2C^Edr1|02ak RA|fa` JBNua(k C^r~1|aRkQ a4JBNuP>A1|01|Nq9gtNutNu0@1|By>Nuak/ CB1"_0| 0|0|0|00||f| ?|SB0| 0|0|0|00|_JAfH Af|PtNuakJAfH Af|P/ CB1"_0| 0|0 |||f|0|0|0|SB0| 0|0H@||0|0|0tNutNu?B?< NA\#ak\a$aCa#r#n#j+|V+| /9?< NA\O?</<?<1NACLa>a/9?< NA\O?<?<LNAClock Not Present ... Aborted! /ga` NuH@??<NAXLNu/??<-NAX??<+NAX Nu" BFL8r   `> o"h#@j#@n#@r,Ic.N//Bg?<JNA BbBy@vN&/,HNVlA-HN=-np?<6HnHnxHnpHnlN8=nz=n|=n~=n=n 0.2.tHA=@0.2.tHA=@p=@p=@=n=n=n=n?<3HnHnxHnpHnlN8N^,_ _\N/,HNVA-HN=/. ?<NN^,_ _XN/,HNVA-HN=/. ?<NN^,_ _XN/,HNVA-HN=/. N!/. NN^,_ _XN/,HNVAJ-HN=?. HnNb/.NL/.BgN!:=@/.N!/.NV=n0.N^,_ _TN/,HNVnAJ-HN==n=n=n=n -nr?<+HnHnzHnrHnnN8=nz0.N^,_ _O NNV?.?. ?. /.?.?<NMN^ _O NNV?< NMN^Nu/,HNVA-HN=09A@P@3A . "<//N="09A@HҀ3A . 2<H2<H//N="3A . 2<H3Ap3AByAHyA"n/ Bg?</<D N=@0.N^,_ _PN/,HNVA-HN=09A@@ 3A . "<//N="09A@HҀ3A . 2<H2<H//N="3A . 2<H3Ap3AByAHyA"n/ ?CO$OpQ?<BgN#f/9F?9F,CrO$OpQ?<BgN#f/9F?9F*CDO$OpQ?<BgN#f/9F?9F(CO$OpQ?<BgN#f/9F?9F&CO$OpQ?<BgN#f/9F?9F$CO$OpQ?<BgN#f/9F?9F"CO$OpQ?<BgN#f/9F?9F C^O$OpQ?<BgN#f/9FBg?<?9E?9E?9E?9EN(?<N2N^,_ _TN Unparking Drive Parking Drive/,HNVA-HN=/9F?9F?<?9E?9E?9E?9EN(/9F?9F:?<?9E?9E?9E?9EN(/9F?9F,?<?9E?9E?9E?9EN(/9F?9F8?<?9E?9E?9E?9EN(/9F?9F*?<?9E?9E?9E?9EN(/9F?9F6?<?9E?9E?9E?9EN(/9F?9F(?<?9E?9E?9E?9EN(/9F?9F4?<?9E?9E?9E?9EN(/9F?9F&?<?9E?9E?9E?9EN(/9F?9F2?<?9E?9E?9E?9EN(/9F?9F$?<?9E?9E?9E?9EN(/9F?9F0?<?9E?9E?9E?9EN(/9F?9F"?<?9E?9E?9E?9EN(/9F?9F.?<?9E?9E?9E?9EN(/9F?9F ?<?9E?9E?9E?9EN(N^,_Nu/,HNVAN-HN=/9F?9FBgBgN)/9FN"$/9FBgN!:3E/9FN!N^,_Nu/,HNVA-HN=/9F?9F/9F?9F.BgBgN)`$ @b@0;N8RlN^,_ _TN/,HNVA-HN=?. NPBn?.NNBnBnBn3A3AHyC?. N=@0.J@f p=@`HyCp/ND=@0.J@W0. |r|AWCBd\p9E@p9E@p9E@p9E@HyC .S/N=@0.J@fp=@`0.J@f p=@`p=@0.R@=@0.rA^„nBd0.@d0.`/9F?9F>CO$OpQ?<BgN#f`/9F?9F,CO$OpQ?<BgN#f`P/9F?9F*CvO$OpQ?<BgN#f`/9F?9F(CDO$OpQ?<BgN#f`/9F?9F&CO$OpQ?<BgN#f`/9F?9F$CO$OpQ?<BgN#f`/9F?9F"CO$OpQ?<BgN#f`V/9F?9F C|O$OpQ?<BgN#f`$ @b@0;N^&X`0.`/9F?9F>CO$OpQ?<BgN#f`/9F?9F,CO$OpQ?<BgN#f`P/9F?9F*CO$OpQ?<BgN#f`/9F?9F(CO$OpQ?<BgN#f`/9F?9F&CNO$OpQ?<BgN#f`/9F?9F$CO$OpQ?<BgN#f`/9F?9F"CO$OpQ?<BgN#f`V/9F?9F CO$OpQ?<BgN#f`$ @b@0;N^&X0.R@=@0.rAoVNN<-@N<-@ .갮gN<-@N<-@ .갮gBgN2/9FNtN^,_ _TNn/a OK /,HNVA,-HN=0<|=@?<BgBg?<"?<N#F?<BgBg?<!?< N#F/9F?<Bg?< ?<?<?<Bg?.N3FJ/9F?<Bg?<?<?<?<Bg?.N3FH/9F?<Bg?<?<?<?<Bg?.N3FF/9F?<Bg?<?<?<?<Bg?.N3F/9F?<Bg?<?<?< ?<Bg?.N3F/9F?<Bg?<?<?<?<Bg?.N3F,/9F?<Bg?<?<?<?<Bg?.N3F*/9F?<Bg?<?<?<?<Bg?.N3F(/9F?<Bg?<?< ?<?<Bg?.N3F&/9F?<Bg?<?< ?<?<Bg?.N3F$/9F?<Bg?<?< ?<?<Bg?.N3F"/9F?<Bg?<?< ?<?<Bg?.N3F /9F?9FJCO$OpQ?<BgN#f/9F?9FHCO$OpQ?<BgN#f/9F?9FFCnO$OpQ?<BgN#f/9F?9FO$O p Q?<BgN#f/9F?9FB?<BgN)N^,_Nu Abort Park Please turn system off now. Hard Drive is Parked7.........6.........5.........4.........3.........2.........1.........0.........------------------------------Copyright (c) 1987 ICD, Inc.Hard Drive ParkA#@xA@|0B1|AA,01|ByAByAN6//    XO$o22tJo g4<200<B2rGB0H@B JAga>kQ /a8k |20|2NqJPBy>//?< NA\  _N <:9gSjNuNu/,HNVnN=AL-Hp. R@rA Hn N9-@r?<nHnHnzHnrHnnN80.zJ@V=B0.N^,_ _ON/,HNVnN=AD-H=n=n ?<pHnHnzHnrHnnN80.zJ@g -nn`B .N^,_ _XN/,HNVN=A-H"n / Bg?.Nz"_"N^,_ _\N/,HNVN=A-H"n / Bg?.NF"_"N^,_ _\N/,HNVtN=A -H?<oHnHnHnxHntN8N^,_NuNu/,HNVN=Aj-H0.T@=@?.N%j-@/.?a."|>a&Hy>?<N7Jy@vg _9N6BgNAg`NuNu/,HNV-n=n ?<4HnHnHnHnN8=n0.N^,_ _\N _#F#F#F#F#FLF#FdF0/3FL| H |? "|FNH2H2H209FL @pf2<`2<3FT"<F0<NBNu _<#F#F#F#F"_#F:3E3_3_ 2/3yF Jg( yF8DSEk0 yF00 yF0Q?"<F0<sNBJ_`.:9FPH yFSEk0 yF00 yF0QNu _3FN09FNu _3FN09FNu _3F3FN _"_$_2F4FN _3F3FN _"_$_2F4FN _3FN09FNu _ RN _"_/) g g f0)k @e??<>3|NAXNu @jNu#; _ g@ne@jd 9;NHy;`Hy;N7zt`t _"_0gR@| e.G;$S" ghjebb"*f&"`v&A%S"`l&J`ذ|gb*|f8"9;g0$A#;`""9;g$A#;`"9;g $A#;"`"E@j&R"$b Hy;N7zJgr"QHd2S@k"QN _"_0" g@ne@jd gR@ @mz @ e@E;"fB3@B$`\&A2+@ef "'I`F"3@B$`8$K`ư|f";#;` |f";#;` ";#;NHeap overruns stackPointer NILPointer not in heapH`?<,NAT24HAI<Ёr jЂLNu&_4"_jtEF  SB*(y@r/,,/  HyFUBkQBBg?<KNANHF _0"_jp&y@rr+t$IS@k,RB  WfSBkBkG$I0(K Vg RQBg`?</LFNu _ hNVf 0(gr"OD@Hd2S@k "Q` _"y@je Hy=nN7zN#Gb#G^ .f -|=^`-|=^ nNнG^f yGbNStack overruns heapH?Gf _z gBjDRE"g8jDRE$6HBJBg8HAJAf,HBJBf$ւi EdD.` $HB8`B/L?GfNu0NvDNHGf|` HGf| _z f0NjDRE"g`jDREdJgR(`DfxJg<`DxSDbb JgHA8`"tcRЀ`xeWJg(MdD.`B/LGfNu09@hNu _3@fNBy@hNu[3][][ Abort ]Copyright 1986, CCD and OSS, Inc. , ,, (28b  (  ( .  (" """""""""  F                                 F,&6 t" " " " " " " "8" " " " " " " "F  0"""""""""""""""""""""""""""""""" ""(""" $*.444"0.4\.0DX<"$>,$8(l*lrh\,&D0T>0,8&&,F.:FFFF*@4n(>2020nD(."F<".&$$6  D"2 T &( 0&  >        R  <   , F"L2 V   READ.ME 8/12/87 This file documents the ICD ST Hard Drive Utilities. These utilities are packaged with all ST Hard Drive Systems and ST Host Adapters sold by ICD. They are all Copyright (C) 1987 ICD, Inc., however, you are free to use and distribute these utilities as long as: 1) They are not sold or included with any other product unless an ICD Host Adapter is part of that product. 2) They are not modified in any way. 3) ICD is given credit for authorship of these files. 4) This documentation is included. * Any company wishing to include these utilities with their products must first obtain a license from ICD, Inc. or they will be in violation of Federal and/or International Copyright Laws. Licensed will display the license registration number. If you have any questions: ICD, Inc. 1220 Rock Street Rockford, IL 61101 Voice: 815-968-2228 Modem: 815-968-2229 FAX: 815-968-6888 +---------------------------------------------------------------------------+ In brief, here are a few things you SHOULD know: o The Hard drive handler (ICDBOOT.PRG) does a verify after write. You will NOT be able to tell the difference in speed... In fact, you would not have even suspected it if we didn't point this out. (Of course, if a write failure does occur, a little '' will appear in the lower right hand corner of your screen, if you do not get an Alert box, then it was able to recover and everything is secure.) Most peole are not aware that NO OTHER HANDLER does write verify! This really is not too startling since hard drives are so reliable, BUT, that data is going through an 18" cable (Supra and Atari drives) at a very fast rate (greater than 500KHz) with absolutely no checksums whatsoever. Why do you think they don't use 24" or 36" cables? It certainly would be more convenient! We ship 36" cables with our ST drives, but that extra length is acceptable due to the Host Adapter's design... It is highly resistent to cable noise. You may disable write verify by setting _FVERIFY to 0. (OS memory location $444). Some command processors have a command to do this. o To enable auto-booting on the hard drive, you need to run HDUTIL.PRG. (Of course the drive must have been previously formatted and ICDBOOT must be installed.) This program simply updates the boot sectors on the hard drive, so it is totally non-destructive and may be run at any time. If you have auto-booting enabled, it may be disabled while you boot by pressing CONTROL+SHIFT+ALTERNATE while turning on the computer. To permanently disable auto-booting, select 'Floppy' in HDUTIL. o A great deal of time has been spent to make the formatter as powerful as possible. If you have a drive which is not in the 'Drives' window, you may either select an equivalent, or enter the data for your drive into the ICDFMT.DAT file. If your controller is not in the 'Controllers' window, you may enter your controller into the ICDFMT.DAT file. However, you must also write the configure/format module for that controller. We are providing the ADAPTEC and XEBEC source modules to use as an example. For more on this, refer to the section entitled "The ICDFMT.DAT File". o All ST drives shipped by ICD have a built in clock on the Host Adapter board inside the case. (The Host Adapters are also available seperately.) The ICDTIME.PRG file will read the time from the Adapter and set the keyboard clock accordingly. The handler stays resident to trap any SET-TIME calls, thus when you use the control panel to set the time, it also sets the clock on the ST Host Adapter. o GEM and most command processors have a bug in them which causes the time and date of your files to be wrong when you copy them from one place to another. The COPYFIX handler solves this problem by monitoring GEMDOS activity and setting the correct time/date in all new files or replaced files. This handler should be put in the AUTO folder (what's new?) +---------------------------------------------------------------------------+ Files on distribution diskette: ------------------------------- ICDBOOT.PRG This is the Hard Disk handler. It will either reside in the AUTO folder of your floppy or in the root directory of 'C:' if auto-booting is enabled. In the latter case it will be renamed to ICDBOOT.SYS (HDUTIL does this for you). HDUTIL.PRG Utility program to enable or disable hard drive auto-booting and set which drive number to load the auto folder from. This command also allows direct loading of a command shell for you 'C' people that would rather use the C command shell rather first entering the desktop. HDUTIL.RSC This is the resource file for HDUTIL.PRG. It must reside on the same disk as HDUTIL.PRG. ICDFMT.PRG This is the hard disk formatter. ICDFMT.RSC This is the resource file for ICDFMT.PRG. It must reside on the same disk as ICDFMT.PRG. ICDFMT.DAT This is the Hard Drive and Controller data file read by ICDFMT.PRG. It must be reside on the same disk as ICDFMT.PRG. This is an ordinary text file, so you may add hard drives and controllers as desired. ICDTIME.PRG This is the time/date handler for the ST Host Adapter board's built in clock. This file should be in the AUTO folder of the boot drive. PARK.PRG This program is used to park all hard drives on your system. Park your hard drive system before transporting it! COPYFIX.PRG This program fixes the time/date transfer problem most file copiers have (including the desktop COPY). It monitors GEMDOS actions and detects when a copy process occurs. Thus, when you copy a file, it will set the time/date of the destination file to that of the source file (just like every other computer in the world!) This program should be in the AUTO folder of the boot drive. ADAPTEC.FMT This is the configure and format module for Adaptec 4000 and 4070 controllers. It is loaded by ICDFMT.PRG just to do those two functions. It must reside on the same disk as ICDFMT.PRG. XEBEC.FMT This is the configure and format module for XEBEC 1410, WD1002-SHD, and WD1002S-SHD controllers. It is loaded by ICDFMT.PRG just to do those two functions. It must reside on the same disk as ICDFMT.PRG. ADAPTEC.PAS This is the source code to ADAPTEC.FMT. It is an example of how to write the configure/format modules if you have a controller not currently supported. XEBEC.PAS This is the source code to XEBEC.FMT. It is an example of how to write the configure/format modules if you have a controller not currently supported. DMA.O This is the raw DMA object module. It should be linked to the configure/format object modules generated by OSS's PASCAL compiler. +---------------------------------------------------------------------------+ Formatting Your Hard Drive -------------------------- First, connect up your hard drive, controller, host adapter, and computer with the appropriate cables. Setup your printer with paper so the bad sector data may be printed (this is not required, but it is useful). The first hard drive should be selected as DS1 and the second (if applicable) should be selected as DS2. Now turn on the computer. CAUTION: It is wise to disconnect any other hard drives with data on them from the system to prevent an accidental format on the wrong drive! To format your hard drive, insert the diskette with the formatter into your floppy drive and double-click on the 'Floppy A' icon. Next, double-click on the 'ICDFMT.PRG' file (adjusting the window as necessary). After the program loads and displays the main screen, you may start selecting your Hard Drive Type and Controller Type. If your drive or controller is not listed, then you need to read the section "The ICDFMT.DAT File". Next select the SCSI or SASI ID of the controller by clicking on that box. A jumper on the controller usually sets the SASI/SCSI ID (refer to your controller manual for information on how to do this). Then select the LUN by clicking on it. This refers to the drive select number on the hard drive itself. Note that LUN=0 if DS1, LUN=1 if DS2, etc. The LUN number must also match the correct port number on your controller board (again, see your controller manual). Finally, you need to set your partition sizes. Simply type the size into the spaces provided after 'C', 'D', etc. The maximum size per partition is 16 Meg and minimum is 1 Meg. You may select up to 12 partitions per hard drive, however, the maximum number of hard drives in the system is 14. If you need to calculate how much room is left, simply click on the calculate button. The interleave is adjustable, but you will find the default to be the fastest possible (this refers to the order the sectors are laid down on the cylinder; lower numbers are faster unless the controller cannot handle the data fast enough). When everything looks correct, click on FORMAT. If you don't get the bad sector list next, then read the dialog box and do the appropriate thing. Now enter any bad sectors that may be listed on the hard drive itself, or any defects that you may know about. It is possible the marginal areas of media may verify correctly since most controllers can correct up to 11 consecutive bad bits. During the verify pass, if bad sectors are found, it will print the sector number, head number, cylinder number, and byte offset to your printer. If this is not preceded by an asterisk, then this sector was NOT entered into the bad sector list. Keep this information in case you ever reformat the drive, this will ensure that that sector will be marked bad next time. When done entering the bad sector list, click on the 'OK' button. You are now given one last chance to check things out... If all looks OK, then go ahead and format your drive. If you get an error, it should be self-explanitory. If you received any drive errors, you should check your drive connections and the drive/controller selection. After the verify pass and directory layout procedure (all automatic), you should turn off your computer and reboot the system. Make sure that the file ICDBOOT.PRG is in the AUTO folder of floppy A when you boot, this will allow the hard drive to be recognized by the system. When the desktop comes up, the drive partitons will actually be in the system, but in order to access them, you will need to create ICONs to represent them. To do this, click on 'Floppy A' and select 'Install Drive' under the Options Menu. Type a SHIFT-C (capital C) and give the icon a name (e.g. 'Hard Drive') and click on 'INSTALL'. Now you will see a drive 'C' icon on the desktop. You may INSTALL more if you desire and at some point you should save your destop so that you don't have to always INSTALL the drives everytime you boot up the system. +---------------------------------------------------------------------------+ The ICDFMT.DAT File ------------------- This file contains information about all the hard drives and controllers you see on in the format program. To add a drive, enter the following information about your drive in the EXACT same format as the others listed as follows: a. The letter 'd' to indicate a drive (as opposed to controller) b. The name of the drive c. The number of heads on the drive d. The number of cylinders on the drive e. The cylinder number at which to start using reduced write current (if not sure, then just put same number as # of cylinders) f. The cylinder number at which to start using write precomp (if not sure, then just put same number as # of cylinders) g. The parking cylinder (usually 40-50 cylinders beyond the last cylinder). h. The step rate; normally 2. 0 = 3ms non-buffered step for older drives such as ST506 1 = 28us buffered step rate (ST412 and maybe others) 2 = 15us buffered step rate (Almost all drives.. All new ones) To add a controller, enter the following information about your drive in the EXACT same format as the others listed as follows: a. The letter 'c' to indicate a controller (as opposed to drive) b. An 'A' or 'C' depending if controller is SASI or SCSI. (you need this for laying down configuration parameters which are required on SASI controllers.) c. The name of the controller d. The suggested interleave (fastest is best) e. The number of sectors per cylinder if interleave is 1 f. The number of sectors per cylinder if interleave is NOT 1 g. The number of reserved cylinders (some controllers reserve some cylinders for bad sector info, configuration data, etc) h. The Raw number of bytes per sector if interleave is 1 (this is used for Bytes-From-Index calculations) i. The Raw number of bytes per sector if interleave is NOT 1 (this is used for Bytes-From-Index calculations) j. The file name of the configure/format program for this controller k. The drive name that this controller will automatically select. (this is for drives with imbedded controllers such as ST225N and Miniscribe 8425S) If none of the configure/format modules will work with your controller, then you will need to write one. For this you will need Personal Pascal (OSS), and the manual for your controller. The most critical funtion is "Write_Drive_Configuration". You need to put the data into the data frame correctly and send the correct command. Most likely, you will be following the Adaptec model. The "Format_" routine will be pretty much standard for all controllers. Once written, you need to compile the program and link it with "DMA.O" and "PASLIB". Then replace the extension of ".PRG" with ".FMT" and you're all set. (It would be nice if you uploaded the ".PAS" configure/format file to the ICD BBS at 815-968-2229 when get your handler working. Also, you might want to first check to see if someone else has already written one for your controller.) +---------------------------------------------------------------------------+ ST Host Adapter Installation ---------------------------- J1A & J1B - DMA Expansion: Connect another ST adapter board, a Supra hard drive, or an Atari hard drive through this connector. J2A & J2B - DMA to Computer: Connect the DB19 cable from this connector to the back of the ST. J3 - SCSI Connector: You may connect up to 7 SCSI controllers/drives in parallel through this connector. Do not use a controller with ID of 6 since this is the internal clock's bus ID. J4 - Power Connector: You need to supply +5 volts DC to the adpater board. The middle two pins are GND and the outer two pins are +5. Connecting Supra/Atari Drives to J1 ----------------------------------- Supra drives are SCSI=0/LUN=0, so you should set the SCSI ID of your controller to a different value! Atari SH204 drives are also set as SCSI=0/LUN=0, BUT they have a bug in their hardware. They respond to ALL LUN numbers causing havoc to the system. A provision in the drive handler has been made to only see LUN=0 with a SCSI ID of 7. Therefore you will need to set the 3 position dip switch in your SH204 to unit 7 (flip all three switches the other direction). A Few Notes ----------- If the time/date clock seems to be gaining/loosing a second or two a day, you may want to adjust YC1 on the board, however, it is probably easier to just reset the clock twice a year. If there is no YC1, then the clock is preset and is not adjustable. YC1 only has 180 degrees of adjustment so adjust a little at a time. If the clock is way off or seems to return crazy times, the battery is low. For a replacement battery, send $5.00. There are four mounting holes on the board, mount it as you see fit. +-------------------------------------------------------------------------+ Een paar opmerkingen: Maak mbv van deze files een MASTER diskette met ICDBOOT in een AUTO-folder, dit is nodig ivm het HDUTIL programma die de driver op A:\AUTO\ zoekt. De-installeer het huidige AUTO-HD_boot prg (indien aanwezig) en start op met ICDBOOT. Run HDUTIL en installeer de driver op de HD. U kunt PARK ook op de HD zetten. SHIFT-CONTROL-ALTERNATE werkt niet op de MEGA. (Kan iemand dat patchen ??) Het gebruik van FOLDRxxx.PRG is aan te raden. xxx is invulbaar. xxx geeft het aantal aan te maken folderslots aan. In te stellen mbv "Show Info" vanuit de desktop. Ik heb de ICDFMT.DAT aangepast voor de Tandon TM 262, de huidige ATARI SH 204/205 loopwerken. Momenteel staan de Reduce write en Write Precomp. op 616, daar de manual van de TM 262 zegt dat er in de interne logica zelf al een write current begrenzing zit. Als u problemen met deze driver heeft kunt u dit veranderen in 300 300. 23-12-87, W.F. Kilwinger `v6  o"h###,Ic.N//Bg?<JNA BbByNNV?.?<LNAN^ _ON/,HNVA.-HN~Bn0. H=@0.n=@?.NN^,_ _XN/,HNVA$-HN~Bn09 >H=@?.NzN^,_Nu/,HNVA-HN~09 D@@ 3"By$By&By(By*By,09 <2<H.09 <2<HH@/09 @009 82<H109 82<HH@209 62<H309 62<HH@4p 5Hy"Hy.?BBn/.N=@0.`=np=@` N=@0.J@fp9#GrAop@p9#GrA@p9#H@p9#I@-n .29 :H-@09 >R@3 > .ްfp=@Bn`P/./.N=@0.J@g=np=@ .29 :HЁ-@ .ްf p=@Bn`p=@p=@`=np=@`R@ @b@0;N0.@d0.N^,_Nu/,HNVA-HN~p=@0.r. A]0.rA 0p @WCBd0.R@=@`Bnp. nm0.rA 0p-@g Bn`p=@0.R@=@0.r. A_0.rA 0?Hzl?<N0@Bd.0. 2.tA 0Br0A=@0.R@=@`0.@d 0.D@=@=n0.N^,_ _ONA#A0B1|An01|?<Hy FN A FO"Op?"QN~3 D?<Hy FN A FO"Op?"QNP3 B?<Hy FN A FO"Op?"QN"3 @?<Hy FN A FO"Op?"QN3 //    XO$o22tJo g4<200<B2rGB0H@B JAga>kQ /a8k |20|2NqJPBy>//?< NA\  _N <:9gSjNuNu/,HNVC""n-I"np)=@0.rA^"n0.r1p @WCBd0.S@=@`0.J@f"nBQ"n E`"n0J@f0.rA^"n0.r1p @VCBd0.S@=@`"n$n0R@20.rA^"n0.r1p @WCBd0.S@=@`0.J@f~`p=@"n E"n0.r1p @f0.R@=@`"n$n0S@2"n0J@ftBn0.n_"n0.r1p @VCBd60.R@=@"n 0.$n2.t20.R@=@`"n 0.@`80.n_"n0.r1p @VCBd0.R@=@`0.noN^,_ _PN/,HNVBnHnHnN=n0.N^,_Nu/,HNV0.rAn"n E"`Hn"n / NN^,_ _\N/,HNV"n p)=@0.rA^"n 0.r1p @WCBd0.S@=@`0.J@f Bn`0.rAW"n 0.r1p:@WCBd p=@ nnZ"n 0.r1pa@m$0."n 2.t1BA`0."n 2.t1ARn`Hn?<Hzv?<N0Hn?<HzZ?<N2AHn?<Hz?<N0@Bd0.R@=@`0.n^=B0.N^,_ _XN@NUL:AXO:AXI:PRN:LST:CON:H&FaS@r VW?/L&FNuH&FaS@r VV?/L&FNuH&FaS@r VU?/L&FNuH&FabS@r VS?/L&FNuH&Fa>S@r VR?/L&FNuH&FaS@r VT?/L&FNu#&b _0 @g "_J@jp`0&E"|&Ep2 Ag $_JAjr`2&E$|&Er@g\H&ZG%Fe$4SBkQ4@SBpQ0"|%F` 4SBkQ4ASBrQ$|%FL&ZJ@f pC*$I/9&bNuH&f _024SBgQ@4BAAc/L&fNuHytN"Range error during set-operationH&f _0246@SCBgQAn68DCCc 0AgRB`/L&fNuH&f _0@CEHS@rIVW.J?/L&fNuH&f _0@CEHS@rIVV.J?/L&fNuH&f _0@CEHS@2FA_VW.J?/L&fNuH&f _0@CEHS@2FAYVW.J?/L&fNuH&f _0@274BAAc7V`tO>/L&fNuH&f _0@"_24BAAc1V`t>/L&fNuH&f _02S@AC2YQ/L&fNuH&f _02S@AC2YQ/L&fNuH&f _02S@AC2FAYQ/L&fNu _"_/) g g f0)k @e??<>3|NAXNu _4` _t6 Bo r aSB`2aNH? _r ar a/L? Nu _r aN _4` _t"x0HgJJjDxvCLzp cRЀ`|e W0R"f`6 _4` _t2xJAjDAxvCLp0 2H@0RJAfJg<-RBlCSBr aQSCaQN _4v` _46"_JBjtJCkgCe4`BSCr aQSBk aQN _v` _60@d Cot`CjtJCgkCe4`BSCr aQSBavQNFALSETRUE _6kfv2_t Cc"4YBv` _6kfv"_t Cc4QBvSBkr a(QSCC" A0 9c^a JgYC`NH "oA/ NLL NuBy(_ _/ C( g  f4t4(H / /?(?<@NA LJkn gffNu4(SBraQNu(gN fH ??<NAXLNu f H ??<` f H ??<` f NuHy?` Hy0< LN REWRITE required prior to WRITE or PUTDisk or directory full _ hNVf 0(gr"OD@Hd2S@k "Q` _"ye HyN"N#&#& .f -|`-| nNн&f y&NStack overruns heapH?& _z gBjDRE"g8jDRE$6HBJBg8HAJAf,HBJBf$ւi EdD.` $HB8`B/L?&Nu0NvDNH&|` H&| _z f0NjDRE"g`jDREdJgR(`DfxJg<`DxSDbb JgHA8`"tcRЀ`xeWJg(MdD.`B/L&Nu _(N _0/Ho |3JyfXNX/#&"|va "_a"|}aJyg y&9BgNA/ ?< NA\Nu09Nu _3NByNu *** *** Copyright 1986, CCD and OSS, Inc.,.B * D  &:    "(    . (  F Jz            .$ *xN6r     $"  ,*< * * , , 0 , "h2J X n V    {$S50} Program Format_Routines; {~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Possible return codes from this module: 0 - format successfully completed. 1 - timeout while trying to configure 2 - timeout while trying to format 3 - could not format the hard drive (sense code in hi byte) 4 - could not configure the hard drive (sense code in hi byte) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~} Const Write_Dir = -1; Read_Dir = 0; Type MaxString = String [255]; Max_String = MaxString; Raw_Data = Array [1..1] of Byte; Sect_Data = Packed Array [0..511] of Byte; Word_Data = Array [0..255] of Integer; Com_Rec = Record Case Integer of 1: (data: array[1..6] of integer); 2: (buf: raw_data); end; dat_rec = record case integer of 1: (bytes: sect_data); 2: (words: word_data); end; Var RC,RC2 : Integer; command: com_rec; dataf,datag: dat_rec; SCSI, LUN, Heads, Bad_Cyls, Cyls, Sectors, Red_Write, Pre_Comp, Land_Zone, Step_Rate, Reserved, Interleave : Integer; WkStr: MaxString; mybuff : dat_rec; MBuffer: Dat_rec; {================================== external routines ===================================} Function DMA (var com_frame: raw_data; var data_frame: dat_rec; dir,blocks: integer; timeout: long_integer): Integer; External; Procedure Pterm (RC: Integer); GemDOS ($4c); Procedure Stop (RC, Sense: Integer); Var X: Integer; Begin X := 0; X := ShL (Sense, 8); { sense error in high byte } X := X | RC; { return code in low byte } Pterm (X); { goodbye... } End; Procedure Stop_OK; Var X: Integer; Begin X := 0; X := ShL (Bad_Cyls, 3); { # bad cyls in high 13 bits } Pterm (X); { goodbye... } End; {==========================================} Function Write_Drive_Configuration: Integer; Var X: Long_Integer; Begin Command.Data [1] := $0C + ($20*SCSI); Command.Data [2] := 0; Command.Data [3] := 0; Command.Data [4] := 0; Command.Data [5] := 0; Command.Data [6] := 0; Dataf.Bytes [ 0] := Cyls div 256; Dataf.Bytes [ 1] := Cyls mod 256; Dataf.Bytes [ 2] := Heads; Dataf.Bytes [ 3] := Red_Write div 256; Dataf.Bytes [ 4] := Red_Write mod 256; Dataf.Bytes [ 5] := Pre_Comp div 256; Dataf.Bytes [ 6] := Pre_Comp mod 256; Dataf.Bytes [ 7] := 11; { 11-bit error detection ?? } Write_Drive_Configuration := DMA (Command.Buf, dataf, Write_Dir, 1, 100000); X := 1; While X < 100000 do x := x+1; { a little delay } End; Function Request_Sense: Integer; Var RC: Integer; Begin Command.Data [1] := $03 + ($20*SCSI); Command.Data [2] := $20 * LUN; Command.Data [3] := 0; Command.Data [4] := 0; Command.Data [5] := 0; Command.Data [6] := 0; RC := DMA (Command.Buf, MBuffer, Read_Dir, 1, 100000); Request_Sense := MBuffer.bytes[0]; If (RC=2) or (RC=-1) then Writeln ('Failure on Request_Sense'); End; {==========================================} Function Send_Format (Start: Long_Integer): Integer; Var RC: Integer; L : Record Case Integer of 1: (Long: Long_Integer); 2: (B : Packed Array [1..4] of Byte); End; Begin L.Long := Start; Command.Data [1] := $04 + ($20*SCSI); Command.Data [2] := ($20 * LUN) + (L.B [2] & 31); Command.Data [3] := L.B [3]; Command.Data [4] := L.B [4]; Command.Data [5] := Interleave & 15; Case Step_Rate of 0: Command.Data [6] := 0; 1: Command.Data [6] := 6; 2: Command.Data [6] := 7; End; Send_Format := DMA (Command.Buf, Dataf, Write_Dir, 1, 2000000000); End; {================================================================} Function Format_Alternate_Track (Start, Alternate: Long_Integer): Integer; Var RC: Integer; L : Record Case Integer of 1: (Long: Long_Integer); 2: (B : Packed Array [1..4] of Byte); End; Begin L.Long := Start; Command.Data [1] := $0E + ($20*SCSI); Command.Data [2] := ($20 * LUN) + (L.B [2] & 31); Command.Data [3] := L.B [3]; Command.Data [4] := L.B [4]; Command.Data [5] := Interleave & 15; Case Step_Rate of 0: Command.Data [6] := 0; 1: Command.Data [6] := 6; 2: Command.Data [6] := 7; End; L.Long := Alternate; Dataf.Bytes [ 0] := L.B [2]; { This is the alternate track } Dataf.Bytes [ 1] := L.B [3]; Dataf.Bytes [ 2] := L.B [4]; Format_Alternate_Track := DMA (Command.Buf, Dataf, Write_Dir, 1, 45000000); End; Function Format_Xebec: Integer; Var A,B,C,D : Long_Integer; Total_Sectors : Long_Integer; Current_Sector: Long_Integer; Bad_Block : Long_Integer; Done : Boolean; RC, RC2 : Integer; L : Record Case Integer of 1: (Long: Long_Integer); 2: (B : Packed Array [1..4] of Byte); End; Begin A := Heads; B := Cyls; C := Sectors; D := Reserved; Total_Sectors := ((A * B) - D) * C; Bad_Cyls := 0; { Number of bad cylinders } Current_Sector := 0; Repeat Done := False; RC := Send_Format (Current_Sector); Case RC of 0,-1 : Begin Format_Xebec := RC; Done := True; End; 2 : Begin { bad sector } RC2 := Request_Sense; If RC2 = 0 then If MBuffer.Bytes [1] > 127 then Begin L.B [1] := 0; L.B [2] := (MBuffer.Bytes [1] & 31); L.B [3] := MBuffer.Bytes [2]; L.B [4] := MBuffer.Bytes [3]; { get bad block # } Bad_Block := L.Long; Total_Sectors := Total_Sectors - Sectors; Bad_Cyls := Bad_Cyls + 1; If Current_Sector=Total_Sectors then begin Done:= true; Format_Xebec := 0; end Else begin RC := Format_Alternate_Track (Bad_Block, Total_Sectors); If RC <> 0 then begin Format_Xebec := RC; Done := True; End; Current_Sector := Current_Sector + Sectors; If Current_Sector=Total_Sectors then begin Done:= true; Format_Xebec := 0; end end end Else begin { no block given in request sense } Format_Xebec := 2; Done := True; End Else begin Format_Xebec := RC2; Done := True; End; End; End; {case} Until Done; End; Function Val (S: MaxString): Integer; VAR minus: boolean; i,n : Integer; BEGIN i := 1; WHILE (i < length(s)) AND (s[i] = ' ') DO i := i + 1; n := 0; IF length(s) >= i THEN BEGIN IF s[i] <> '-' THEN minus := false ELSE BEGIN minus := true; i := i + 1; END; WHILE (i <= length(s)) AND (s[i] IN ['0'..'9']) DO BEGIN n := (n * 10) + ord(s[i]) - ord('0'); i := i + 1; END; IF minus THEN n := -n; END; val := n; END; Begin Cmd_GetArg (1, Wkstr); SCSI := Val (Wkstr); Cmd_GetArg (2, Wkstr); LUN := Val (Wkstr); Cmd_GetArg (3, Wkstr); Heads := Val (Wkstr); Cmd_GetArg (4, Wkstr); Cyls := Val (Wkstr); Cmd_GetArg (5, Wkstr); Sectors := Val (Wkstr); Cmd_GetArg (6, Wkstr); Red_Write := Val (Wkstr); Cmd_GetArg (7, Wkstr); Pre_Comp := Val (Wkstr); Cmd_GetArg (8, Wkstr); Land_Zone := Val (Wkstr); Cmd_GetArg (9, Wkstr); Step_Rate := Val (Wkstr); Cmd_GetArg (10,Wkstr); Reserved := Val (Wkstr); Cmd_GetArg (11,Wkstr); Interleave:= Val (Wkstr); RC := Write_Drive_Configuration; Case RC of -1 : Stop (1, 0); 2 : Begin RC2 := Request_Sense; Stop (4, RC2); End; End; RC := Format_Xebec; Case RC of 0 : Stop_OK; -1 : Stop (2, 0); 2 : Begin RC2 := Request_Sense; Stop (3, RC2); End; End; End. ******************************************************************** Deze diskette is samengesteld door de Stichting ST, Postbus 11129, 2301 RH Leiden. Onze bibliotheek van public domain programma's omvat op dit moment (zomer 1988) al zo'n drie honderd disks. Daarop vindt u programma's op elk gebied, van tekstverwerker en database tot de leukste spelletjes, de fraaiste tekenprogramma's en de handigste utilities. Ook bevat onze bibliotheek een speciale afdeling voor public domain disks met Macintosh software, die te gebruiken zijn onder de ALADIN emulator. Deze MAC-PD serie bevat tot nu toe ongeveer vijfendertig disks. ******************************************************************** U vindt in het twee maandelijks tijdschrift "ST" (Onafhankelijk tijd- schrift van en voor gebruikers van Atari ST computers) een overzicht en een bespreking van de inhoud van de nieuwe public-domain diskettes. Dit tijdschrift bevat tevens een bestelkaart zodat U vlot over de software kunt beschikken. De Stichting ST geeft ook een speciale PD catalogus disk uit. ************** Deze public domain disk is geproduceerd en gedistribueerd door: Stichting ST afd. Software Bakkersteeg 9A 2311 RH LEIDEN ************** Ondanks onze controle komt het af en toe voor dat een diskje niet goed is gecopieerd.Mocht U dit overkomen, aarzel dan niet en stuur de defecte disk aan ons terug. U krijgt dan direct een vervangende disk toegestuurd. ************************************************************************ Teneinde het voor ons mogelijk te maken om productie fouten op te sporen en vervolgens in de toekomst te vermijden, zijn alle disks, geproduceerd door de Stichting ST, voorzien van een groen productie nummer. ************************************************************************