[comp.sources.amiga] v90i280: ZapDH0 1.3 - patch 2090 OFS partition to be ZH0:, Part01/01

amiga-request@abcfd20.larc.nasa.gov (Amiga Sources/Binaries Moderator) (10/15/90)

Submitted-by: "John Davis,chem dept, UoC NZ" <CHEM194@canterbury.ac.nz>
Posting-number: Volume 90, Issue 280
Archive-name: util/zapdh0-1.3/part01

[ uuencoded executables enclosed  ...tad ]

a utility for 2090 owners who are sick of the the OFS partition of 
their HD being called DH0:, and who are equally sick of brain-dead
install programs and filerequesters that list only dh0:. Will
rename dh0: to zh0:, allowing you to mount your main (ffs) partition
as dh0:. Also includes a facility to 'clone' the df2: drive as
df1: for people with one internal and one external drive on their
2000.

#!/bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 1 (of 1)."
# Contents:  listdevs.mod listdevs.uu zapdh0.doc zapdh0.mod zapdh0.uu
# Wrapped by tadguy@abcfd20 on Sun Oct 14 14:27:23 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'listdevs.mod' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'listdevs.mod'\"
else
echo shar: Extracting \"'listdevs.mod'\" \(6787 characters\)
sed "s/^X//" >'listdevs.mod' <<'END_OF_FILE'
XMODULE lister;
X
X(* example code showing how to scan the DOS device list
X   to work out what devices are available to DOS,
X   what their types are ( whether they're a device, a dir etc ),
X   and how to extract info on properties of devices ( host device
X   physical parameters etc )
X*)
X
X(* by J Davis v1.0 10/89            *)
X(*            v1.1 6/90             *)
X(* compiled using TDI M-2 v3.01a    *)
X
X(* thanks to Patrick Horgan for the  code he 
X   posted to UseNet showing how to do the enviroment probing 
X*)
X
XFROM DOSLibrary      IMPORT DOSName,DOSBase,BPTR,BSTR;
XFROM DOSExtensions   IMPORT DosBaseRec,RootNode,DosInfo,DeviceList;
XFROM AmigaUtils      IMPORT PtrFromBPTR;
XFROM SYSTEM          IMPORT NULL;
XFROM InOut           IMPORT WriteString,WriteLn,Write;
XFROM LongInOut       IMPORT WriteLongCard,WriteLongInt,WriteLongHex;
XFROM Libraries       IMPORT OpenLibrary,CloseLibrary;
XFROM DOSLibrary      IMPORT DateStampRec;
XFROM FileHandler     IMPORT DeviceNode,FileSysStartupMsg;
XFROM SYSTEM          IMPORT ADDRESS,BYTE;
X
XTYPE 
X
Xstring = ARRAY [0..255] OF CHAR;
Xstrptr = POINTER TO string;
X
XDOSenv = ARRAY [0..255] OF LONGCARD;
X
XVAR
X
Xourdosbase : POINTER TO DosBaseRec;             (* use this to access dosbase *)
Xinfoptr    : POINTER TO DosInfo;                (* points to DOSinfo node     *)
Xdevlistptr : POINTER TO DeviceList;             (* points to current place is DOS devlist *)
Xdevnodeptr : POINTER TO DeviceNode;             (* used for accessing device nodes *)
Xfssm       : POINTER TO FileSysStartupMsg;      (* used to access the filesystemstartupmessage *)  
Xdosenvptr  : POINTER TO DOSenv;
X
Xnameptr    : strptr;
Xcptr       : POINTER TO CHAR;
Xp          : CARDINAL;
X
X
X
XPROCEDURE WriteBSTR(b:BPTR);
X(* output a BSTR *)
XVAR
Xnptr : strptr;
Xc    : CARDINAL;
XBEGIN
Xnptr:=PtrFromBPTR(b);
XIF nptr^[0]>=CHR(1) THEN
X   FOR c:=1 TO ORD(nptr^[0]) DO
X       Write(nptr^[c]);
X   END;
XEND;
XEND WriteBSTR;
X
X
XBEGIN
X
XDOSBase:=OpenLibrary(DOSName,0);   
X(* open the dos lib *)
X
XWriteString("listdevs v1.2 By John Davis 6/90");
XWriteLn;
X
Xourdosbase:=DOSBase;                              
X(* get a usable pointer onto dosbase *)
X
Xinfoptr:=PtrFromBPTR(ourdosbase^.dlRoot^.rnInfo); 
X(* get pointer to dosinfo struct *)
X
Xdevlistptr:=PtrFromBPTR(infoptr^.diDevInfo);      
X(* get a pointer to start of devlist *)
X
XWHILE devlistptr<>NULL DO
X      (* scan down device list checking as we go *)
X          
X      (* print out the device name *)
X      WriteString("node name : ");
X      WriteBSTR(devlistptr^.dlName);
X      WriteLn;
X      
X      Write(CHR(9));
X      
X      (* determine the nodes type and display it *)
X      IF devlistptr^.dlType=0 THEN
X         WriteString("Type         : DEV ");
X         WriteLn;
X      ELSIF devlistptr^.dlType=1 THEN
X         WriteString("Type         : DIR ");
X         WriteLn;
X      ELSIF devlistptr^.dlType=2 THEN
X         WriteString("Type         : VOL ");
X         WriteLn;
X      ELSE
X         WriteString("Type         : ??? ");
X         WriteLn;
X      END;
X         
X      (* I'm primarily interested in devices,  
X             VOLUMES are simply currently mounted disks
X             DIRS are assigned logical drives ( such as fonts: )
X      *)
X
X      IF devlistptr^.dlType=0 THEN
X         (* node is a device node, extract extra info *)
X        
X         devnodeptr:=ADDRESS(devlistptr);          
X         (* transform to right type *)
X          
X         fssm:=PtrFromBPTR(devnodeptr^.dnStartup); 
X         (* get pointer to filesystemstartup block *)
X         
X         dosenvptr:=PtrFromBPTR(fssm^.fssmEnviron);
X         (* get pointer into enviroment block *)
X                  
X         (* if there's no fssm the fssmptr _should_ be null, but this
X            doesn't seem to be always true ( espec on par, prt and ser )
X            so check to see if the dosenv[de_tablesize] makes sense also
X         *)
X         IF (fssm<>NULL) AND (dosenvptr^[0]<=16) THEN
X
X            (* printout host device for this dev *)
X            Write(CHR(9));
X            WriteString("Device       : ");
X            WriteBSTR(fssm^.fssmDevice);
X            WriteLn;
X
X            (* and the host devices unit *)
X            Write(CHR(9));
X            WriteString("Unit         : ");
X            WriteLongCard(fssm^.fssmUnit,8);
X            WriteLn;
X            
X            (* now probe the enivroment space *)
X           
X            FOR p:=0 TO SHORT(dosenvptr^[0]) DO
X                Write(CHR(9));
X                
X                CASE p OF
X                   0:  WriteString("env size     : "); |
X                   1:  WriteString("block size   : "); |
X                   2:  WriteString("SecOrg       : "); |
X                   3:  WriteString("Num Heads    : "); |
X                   4:  WriteString("Sec / Blk    : "); |
X                   5:  WriteString("blks / track : "); |
X                   6:  WriteString("reserved     : "); |
X                   7:  WriteString("prefac       : "); |
X                   8:  WriteString("Interleave   : "); |
X                   9:  WriteString("Low Cyl      : "); |
X                  10:  WriteString("High Cyl     : "); |
X                  11:  WriteString("Buffers      : "); |
X                  12:  WriteString("bufmemtype   : "); |
X                  13:  WriteString("Maxtransfer  : "); |
X                  14:  WriteString("Mask         : "); |
X                  15:  WriteString("bootpri      : "); |
X                  16:  WriteString("DOStype      : ");
X                END;
X         
X                IF p<>16 THEN
X                   WriteLongCard(dosenvptr^[p],8);
X                ELSE
X                   WriteLongHex(dosenvptr^[p],16);
X                END;
X         
X                WriteLn;
X            END;         
X         END;
X         
X         (* display the taskpri of the device handler *)
X         Write(CHR(9));
X         WriteString("Pri          : ");
X         WriteLongInt(devnodeptr^.dnPriority,8);
X         WriteLn;
X
X         (* and the amunt of stack for that task *)
X         Write(CHR(9));
X         WriteString("Stack        : ");
X         WriteLongCard(devnodeptr^.dnStackSize,8);
X         WriteLn;
X         
X         (* print out the name of the handler *)
X         Write(CHR(9));
X         WriteString("Handler      : ");
X         cptr:=PtrFromBPTR(devnodeptr^.dnHandler);
X         IF cptr^ = CHR(0) THEN
X            WriteString(" default dos handler");
X         ELSE
X            WriteBSTR(devnodeptr^.dnHandler);
X         END;
X         WriteLn;
X               
X      END; (* device case *)
X
X      (* I don't bother extracting any info from VOLUMES|DIRS
X         there's not much of interest in there anyway
X      *)
X    
X      WriteLn;
X      
X      devlistptr:=PtrFromBPTR(devlistptr^.dlNext); 
X      (* scan on down devlist *)
XEND;
X
X
XCloseLibrary(DOSBase);
X
XEND lister.
END_OF_FILE
if test 6787 -ne `wc -c <'listdevs.mod'`; then
    echo shar: \"'listdevs.mod'\" unpacked with wrong size!
fi
# end of 'listdevs.mod'
fi
if test -f 'listdevs.uu' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'listdevs.uu'\"
else
echo shar: Extracting \"'listdevs.uu'\" \(10702 characters\)
sed "s/^X//" >'listdevs.uu' <<'END_OF_FILE'
Xbegin 666 listdevs
XM```#\P`````````#``````````(```8B````=`````````/I```&(D[Y```0"
XMX"!?D)"PJ``$8@SC@-"H``C0\`@`3M#1Z``(68A.T"(`<`9.1TYU3E;_Z"H`W
XM>`G:A#U%__XJ#E"%+47_Z$#N__@M3?_T+5;_\$YH+4C_[`QN``?__F<(#&X`%
XM"/_^9A0M;@`2__HJ+O_H4(4M1?_H3OH`0@QN``___F8,3F@M:``(__I.^@`N6
XM#&X`$/_^9@Q"KO_Z0J[_\$[Z`!H,;@`)__YE"DYH+5#_^D[Z``@M;@`*__I)U
XM^0```!@XKO_^0BP``BEN__H`!#EN__@`""EN__0`"BEN__``#BEN_^P`$BENQ
XM__``%AE\``$`&BYN_^@@.0```!0O0``"/KP``"Q63FA9B$Y@3G-.7DYU2?D`)
XM``!4*@PB17``+'@`!$ZN_=@J`"Q%.CD````8!D4!]4C%(@5.KO]P($]!Z/^`W
XMD<"Q[0`$8@9R`W`&3D=.=4J?+T[__$YN+2\``CT7+2___$CF__PB42".+$E,/
XMWC__+U[__#Z>+UX``DYF+&___$YS2I\O3O_\3FXM+P`"/1<M+__\2.;__")1<
XM((Y'^@`J+0L]/$ZY/3PG`#T\1OPDCBQ)3-X__R]>__P^GB]>``).9BQO__Q.&
XM<R].__Q.;BTO``8]+P`$+2___$CF__P@7R)H`"0BCBQ(3-X__R]>__P^GB]>C
XM``).9BQO__Q.<T;\)P`N'PP'`"=F!DZY```"4`P'`"9F!DZY```!4`P'`"5F=
XM!DZY```!@@P'``IF"'#X3KD````L#`<`"V8(</=.N0```"PP!T1`4D!.N0``P
XM`"Q*GU4`9@@"5_C_@U=.<U,`9@0^@4YS4P!F!D;\(`!.<U,`9@1.<4YS4P!F8
XM"B`!3KD````L3G-.5@``2.=X`"(N``PD+@`(M+P``/__8AY"0X+":`XX`4)!)
XM2$&"PC8!,@2"PDA#-@%"04A!8!Y"@S8!2$-"04A!.#P`#^.+XY&R@F4$DH)2%
XM0U',__(M0P`,+4$`"$S?`!Y.7DYU3E8``$CG_P!,[@#P``A(1#8$2$:]0UOG5
XM-`0P/'_PQ$!G``$.-@;&0&<``0;60@1#/_!C``#\:P``_G`/R$`(Q``$S$`(^
XMQ@`$=``_`S`$P,9(0#($PL<V!$A&QL;0@S8$2$?&QTA!TD-"0TA#T8-(1#8$&
XMQL;20TA!0D-(0]&#-@1(1L;&T(,V!,;'TH/1@C8$2$?(QT)$2$32A-&"-@7&X
XMQM*#T8(V!4A&QL9"0TA#TH/1@DA%-@7&QM*#T8)(1LS%2$'21DA!0D9(1M&&M
XM2$?*QT)%2$72A=&"4('1@C8?>`1Z&0L`9P921`9#`!`4`.BZ0@+HJ.BI@H);'
XM!0L`9@S4@M.!T8`$0P`*8R1*0VLH2$`"0``/@$-(0$H?9P1V'P?`2.X``P`02
XM3-\`_TY>3G543W``<@!@ZG`%3KD````D3E8``$CG_P!,[@#P``A(1#($`D%_0
XM\&<``(Y(1C`&`D!_\&<``'"0009`/_!K``!X,@:Y05OG`D8`#PC&``0"1``/,
XM",0`!$A&2$1R'G8`82(D`W(7=@!A%G()XZO5@FM.!$``$&L``"S6@]6"8$#>"
XMA]V&O(1<R?_X`\.>A9V$6\G_[FH,WH7=A`.#2D%=R?_@3G54CW0`=@!([@`,#
XM`!!,WP#_3EY.=7`%3KD````D?``&@P``"`#5AF0*XI+BDP9``!!KXG(`,@)^/
XM"^ZJ[JONN4(!AH%(0@)"``^$0$A"2A]GMG`?`<)@L$Y6``!(Y^``<``B+@`([
XM9T@T/$'@2$$P`68*2$$P`7(`!$(!`$)!#$``_V(,X8CAF8`!0@$$0@"`2D!K[
XM"@1"`!#2@=%`:O;KB.N9@`%"`4A``D``#X!"2$!([@`#``A,WP`'3EY.=4YUG
XM3E8``$CGX``@+@`(XY@D``*``/___P*"_P```&82<`!R`$CN``,`"$S?``=.%
XM7DYUYHKBB.*2!H(X````(@#FB.:9`H%P````@()@UDYQ3G%.<2H`(\4````$\
XM*@@CQ0`````J#R/%````#"`O``0J`"/%````""HY````#)JY````"%"%(\4`[
XM``!02?D```:01_D```!4>@L6W%?-__PC_````1`````4+'@`!")\`````$ZN8
XM_MHJ`"/%````$"/Y````$````$PJ/````?XH>0```$PI10`R+'@`!'`'3J[^]
XMJG`%3J[^JG`&3J[^JD*G0J="IR)Y````4"\)0J<J3Y[\`"2=SF$*+GD````,D
XM<`!.=4[Y```&HF1O<RYL:6)R87)Y`$[Y```%Q$*Y````8D[Y```(@$Y6```O:
XM#B)N``@L>``$3J[^8BQ?3EY.=4Y6```O#BAN``PJ#")%("X`""QX``1.KOW83
XM+%\J`"U%`!).7DYU3E8``"HN``CEA2U%``Q.7DYU3E;_X@QN`"``$&44#&X`E
XM`@`490P,;@`D`!1B!'H!8`)Z`"AN``@8A2AN``A*%&<"8`1.^@#4>@`Z+@`4,
XM+47_XD)N_^@O+@`6+R[_XDZY```"ABZ?*A\]1?_F#&X`"O_F9!@Z+O_F!D4`D
XM,#@N_^A)[O_L&85``$[Z`!HZ+O_F!$4`"@9%`$$X+O_H2>[_[!F%0`!2;O_H_
XM+RX`%B\N_^).N0```H98CRU?`!9*K@`69P)@DDHN`!)G$CHN_^A)[O_L&;P`[
XM+5``3OH`!E-N_^@];O_H_^HZ+O_H2>[_[#@N_^J8;O_H)FX`#!>T4`!``%-N7
XM_^A*;O_H;0)@VCHN_^I212AN``Q"-%``3EY.=4Y6__Y9CR\\.Z/7"DZY```%M
XM>$GY````Y"C?*-\]?``#__XZ+O_^4T7G14GY````U"\T4`0O-%``+SD```%PG
XM+SD```%L3KD```0H4(\Z+O_^YT5)^0```-1)]%``*-\HWU)N__X,;@`1__YF4
XMMDY>3G5.^0``!IQ.5@``68]Z`"\%3KD```402?D```%<*-\HWUF/>@$O!4ZYO
XM```%$$GY```!9"C?*-]9CWH*+P5.N0``!1!)^0```6PHWRC?80#_0EF/>@HO`
XM!4ZY```%$$GY````G"C?*-]9CWID+P5.N0``!1!)^0```*0HWRC?68\J/```E
XM)Q`O!4ZY```%$$GY````K"C?*-\O.0```+`O.0```*PO.0```+`O.0```*Q.I
XMN0```NI0CTGY````M"C?*-\O.0```+@O.0```+0O.0```+@O.0```+1.N0``'
XM`NI0CTGY````O"C?*-\O.0```,`O.0```+PO.0```,`O.0```+Q.N0```NI0R
XMCTGY````Q"C?*-\O.0```,@O.0```,0O.0```,@O.0```,1.N0```NI0CTGYO
XM````S"C?*-\O.0```-`O.0```,PO.0```-`O.0```,Q.N0```NI0CTGY````&
XMU"C?*-\O.0```-@O.0```-0O.0```-@O.0```-1.N0```NI0CTGY````W"C?1
XM*-\C_$$@``````!F(_P[H]<*````?B/\0L@``````&HC_#H#$F\```""(_Q&@
XM'$``````;B/\.%&W%P```(8C_$R^O"````!R(_PVI\6L````BB/\6@X;R@``@
XM`'8C_#4&-[T```".(_QTG<6N````>B/\,U:_E0```))"N0```)9.7D[Y```,-
XM]DY6```O#BQY````8DZN_\HL7RH`+44`"$Y>3G5.5@``+PXL>0```&).KO]\@
XM+%\J`"U%``A.7DYU3E8``"\.(BX`""QY````8DZN_R@L7RH`2H56Q40%'44`+
XM#$Y>3G5.5@``+PXL>0```&).KO_$+%\J`"U%``A.7DYU3E8``"\.(BX`$"0N3
XM``PF+@`(+'D```!B3J[_OBQ?*@`M10`43EY.=4Y6```O#B(N`!`D+@`,)BX`%
XM""QY````8DZN_]`L7RH`+44`%$Y>3G5.5O_\*&X`#$JN``AF"CE\__\`!D[ZV
XM`'8HK@`(+PQ5CR\N``A.N0``"LI8CQH?*%]*!6<(0BP`!$[Z`$XO#%F/+RX`@
XM"$*G>@$O!4ZY```+#$_O``PJ'RA?+47__"\,68\O+@`(0J=Z_R\%3KD```L,!
XM3^\`#"H?*%\I10`(2JP`"%?%1`4910`$0FP`!DY>3G5.5O_\*&X`"DJ48U0O[
XM#%F/+Q1'[@`(*@LO!7H!+P5.N0``"S1/[P`,*A\H7RU%__QZ`;JN__QG'"\,U
XM68].N0``"JXJ'RA?.44`!AE\``$`!$[Z``I";``&0BP`!$[Z``@Y?/__``9.D
XM7DYU3E;_^BAN``Y*E&,"8`1.^@"`0F[_^CHN__JZ;@`,8A0Z+O_Z)FX`"$HS_
XM4`!G!E)N__I@XB\,68\O%"9N``@J"R\%>@`Z+O_Z+P5.N0``"S1/[P`,*A\HS
XM7RU%__QZ`#HN__JZKO_\9QPO#%F/3KD```JN*A\H7SE%``89?``!``1.^@`*O
XM0FP`!D(L``1.^@`(.7S__P`&3EY.=4[Y```(>DY6``!*N0```&)F'EF//SP`7
XM"DAY```-*$*G3KD```;&3^\`"B/?````8DY>3OD```U^9&]S+FQI8G)A<GD`/
XM3E8``$(Y```!=$Y>3G5.5O_^0F[__CHN__ZZ;@`,8AHZ+O_^*&X`"!@T4`"X]
XM.0```71G!E)N__Y@W#UN__X`#DY>3G5.^0``#/!.5@``80#_L$Y>3OD```Z._
XM3E8``$AY```!AA\N``A.N0``"^Q<CTY>3G5.5@``'SP`"F$`_]Q4CTY>3G5.^
XM5@``2'D```&&/RX`#"AN``A(5$ZY```,5D_O``I*>0```8Q7Q40%$\4```%V&
XM3EY.=4Y6_ZQ5CS\N``XH;@`*2%1.N0``#4)<CSHN``B:7SU%__X,;@!/__YOW
XM!CU\`$___D)N__PZ+O_^4T4_!3`N__RP5V\$3OH`'CHN__Q)[O^L&;P`(%``Z
XM,"[__+!7;`92;O_\8.14CPQN`$___F<,.B[__DGN_ZQ"-%``/SP`3TAN_ZQA&
XM`/]*7(\_+@`.*&X`"DA480#_.ER/3EY.=4[Y```->$Y6``!*N0```&)F'EF/@
XM/SP`"DAY```/(D*G3KD```;&3^\`"B/?````8D(Y```!>$AY```!>EF/3KD`^
XM``J23KD```M<4(])^0```7I'^0```9(FW";<)MQ(>0```899CTZY```*\$ZYW
XM```+7%"/2?D```&&1_D```&>)MPFW";<3EY.^0``$.9I;CX@``!O=70^(`!DL
XM;W,N;&EB<F%R>0!.5O_^0F[__CHN__ZZ;@`,8A0Z+O_^*&X`"$HT4`!G!E)N@
XM__Y@XCUN__X`#DY>3G5.5O_6*BX`"DJ%;`)$A2\%/SP`"DJN``I=Q40%'P4_.
XM/``G2&[_V$AN_]=.N0``!OY/[P`2/SP`)TAN_]@_+@`(3KD```WL4(\3^0``F
XM`78```&J3EY.=4Y6_]8O+@`*/SP`"D(G/SP`)TAN_]A(;O_73KD```;^3^\`C
XM$C\\`"=(;O_8/RX`"$ZY```-[%"/$_D```%V```!JDY>3G5.5O_4+RX`"C\\+
XM`!!")S\\`"=(;O_82&[_U4ZY```&_D_O`!)5CS\\`"=(;O_880#_!%R//5__*
XMUCHN_]9)[O_8&;P`2%``.B[_UE)%2>[_V$(T4``_/``G2&[_V#\N``A.N0``A
XM#>Q0CQ/Y```!=@```:I.7DYU<`9.N0```3I.5O_Z68\O+@`(3KD```;L6(\MD
XM7__\*&[__`P4``%E1#U\``'_^BAN__QZ`!H4/P4P+O_ZL%=C!$[Z`"@H;O_\K
XM.B[_^DN\`/\?-%``3KD```V.5(\P+O_ZL%=D!E)N__I@VE2/3EY.=4[Y```.Q
XMB$Y6``!9CS\\``I(>0``%H9"ITZY```&QD_O``HCWP```&(_/``?2'D``!:2A
XM3KD```VZ7(].N0``#:@C^0```&(```&L68\H>0```:PH;``B+RP`&$ZY```&,
XM[%B/(]\```&P68\H>0```;`O+``$3KD```;L6(\CWP```;1*N0```;1G`F`$[
XM3OH%`C\\``M(>0``%K1.N0``#;I<CRAY```!M"\L`"A.N0``$'!8CTZY```-T
XMJ!\\``E.N0``#8Y4CRAY```!M$JL``1F'#\\`!)(>0``%L).N0``#;I<CTZY)
XM```-J$[Z`&XH>0```;1Z`;JL``1F'#\\`!)(>0``%M9.N0``#;I<CTZY```-O
XMJ$[Z`$0H>0```;1Z`KJL``1F'#\\`!)(>0``%NI.N0``#;I<CTZY```-J$[Z]
XM`!H_/``22'D``!;^3KD```VZ7(].N0``#:@H>0```;1*K``$9@)@!$[Z!`0C`
XM^0```;0```&X68\H>0```;@O+``<3KD```;L6(\CWP```;Q9CRAY```!O"\L@
XM``A.N0``!NQ8CR/?```!P$JY```!O&<.*'D```'`>A"ZE&4"8`1.^@+('SP`2
XM"4ZY```-CE2//SP`#DAY```7$DZY```-NER/*'D```&\+RP`!$ZY```0<%B/E
XM3KD```VH'SP`"4ZY```-CE2//SP`#DAY```7(DZY```-NER/*'D```&\+Q0_!
XM/``(3KD```^T7(].N0``#:A">0```<PH>0```<`J%#\%,#D```',L%=C!$[Z-
XM`CH?/``)3KD```V.5(]Z`#HY```!S"`%3KD````&`````````!````&&/SP`C
XM#DAY```7,DZY```-NER/3OH!D#\\``Y(>0``%T).N0``#;I<CT[Z`7H_/``.2
XM2'D``!=23KD```VZ7(].^@%D/SP`#DAY```78DZY```-NER/3OH!3C\\``Y(T
XM>0``%W).N0``#;I<CT[Z`3@_/``.2'D``!>"3KD```VZ7(].^@$B/SP`#DAY-
XM```7DDZY```-NER/3OH!##\\``Y(>0``%Z).N0``#;I<CT[Z`/8_/``.2'D`[
XM`!>R3KD```VZ7(].^@#@/SP`#DAY```7PDZY```-NER/3OH`RC\\``Y(>0``B
XM%]).N0``#;I<CT[Z`+0_/``.2'D``!?B3KD```VZ7(].^@">/SP`#DAY```7A
XM\DZY```-NER/3OH`B#\\``Y(>0``&`).N0``#;I<CT[Z`'(_/``.2'D``!@2&
XM3KD```VZ7(].^@!</SP`#DAY```8(DZY```-NER/3OH`1C\\``Y(>0``&#).*
XMN0``#;I<CT[Z`#!.^@`D``P`(@`X`$X`9`!Z`)``I@"\`-(`Z`#^`10!*@%`,
XM`58!;'`"3KD````D#'D`$````<QG)BAY```!P#HY```!S$N\`/_E12\T4``_4
XM/``(3KD```^T7(].^@`D*'D```'`.CD```',2[P`_^5%+S10`#\\`!!.N0``\
XM#_I<CTZY```-J#`Y```!S+!79`I2>0```<Q@`/W*5(\?/``)3KD```V.5(\_E
XM/``.2'D``!A"3KD```VZ7(\H>0```;@O+``8/SP`"$ZY```/7ER/3KD```VH)
XM'SP`"4ZY```-CE2//SP`#DAY```84DZY```-NER/*'D```&X+RP`%#\\``A.P
XMN0``#[1<CTZY```-J!\\``E.N0``#8Y4CS\\``Y(>0``&&).N0``#;I<CUF/Q
XM*'D```&X+RP`$$ZY```&[%B/(]\```'(*'D```'(2A1F%C\\`!-(>0``&').;
XMN0``#;I<CT[Z`!0H>0```;@O+``03KD``!!P6(].N0``#:A.N0``#:A9CRAY[
XM```!M"\43KD```;L6(\CWP```;1@`/KT+SD```!B3KD```:N6(].7DYU````X
XM`&1O<RYL:6)R87)Y`&QI<W1D979S('8Q+C(@0GD@2F]H;B!$879I<R`V+SDP-
XM``!N;V1E(&YA;64@.B```%1Y<&4@("`@("`@("`Z($1%5B``5'EP92`@("`@^
XM("`@(#H@1$E2(`!4>7!E("`@("`@("`@.B!63TP@`%1Y<&4@("`@("`@("`Z"
XM(#\_/R``1&5V:6-E("`@("`@(#H@`%5N:70@("`@("`@("`Z(`!E;G8@<VEZ@
XM92`@("`@.B``8FQO8VL@<VEZ92`@(#H@`%-E8T]R9R`@("`@("`Z(`!.=6T@,
XM2&5A9',@("`@.B``4V5C("\@0FQK("`@(#H@`&)L:W,@+R!T<F%C:R`Z(`!R8
XM97-E<G9E9"`@("`@.B``<')E9F%C("`@("`@(#H@`$EN=&5R;&5A=F4@("`Z\
XM(`!,;W<@0WEL("`@("`@.B``2&EG:"!#>6P@("`@(#H@`$)U9F9E<G,@("`@#
XM("`Z(`!B=69M96UT>7!E("`@.B``36%X=')A;G-F97(@(#H@`$UA<VL@("`@#
XM("`@("`Z(`!B;V]T<')I("`@("`@.B``1$]3='EP92`@("`@(#H@`%!R:2`@`
XM("`@("`@("`Z(`!3=&%C:R`@("`@("`@.B``2&%N9&QE<B`@("`@(#H@`"!D&
XM969A=6QT(&1O<R!H86YD;&5R``````/L````I0`````````"```"#````A@`C
XM``(D```",@```D````),```"@```!"0```32```&!```!A@```9"```&C```L
XM!IX```:J```'3```!YX```@8```(4```"'P```B,```(H@``"+@```C2```(H
XMZ```"0(```DJ```)5```"7X```FH```)T@``"?P```J.```+@@``"Z@```O(&
XM```,#```#"H```RB```,Q```#/(```T*```-$@``#20```UZ```-B@``#9X`Z
XM``W0```-_@``#HH```ZB```.J@``#L@```[.```.\```#O8```\2```/B@``6
XM#Z````_0```/Y@``$!8``!!<```0=```$(0``!#&```0X@``$/(``!#Z```12
XM#@``$10``!$<```1/```$58``!%V```1?```$8X``!&6```1H```$;@``!&^W
XM```1Q@``$>(``!'H```1\```$@P``!(2```2&@``$B@``!(N```2-@``$F0`J
XM`!)^```2J@``$K8``!*\```2S@``$M8``!+@```2[```$O(``!,&```3#@``8
XM$S8``!-(```37@``$V0``!-T```3>@``$XH``!.0```3H```$Z8``!.V```3H
XMO```$\P``!/2```3X@``$^@``!/X```3_@``%`X``!04```4)```%"H``!0Z:
XM```40```%%```!16```49@``%&P``!1\```4@@``%)(``!28```4J```%*X`2
XM`!2^```4Q```%/@``!4B```52```%5```!5P```5?```%8(``!68```5H```^
XM%:H``!6V```5O```%=(``!7:```5Y```%?```!7V```6"@``%B8``!8L```6N
XM0@``%DH``!90```68```%G@```"2`````0```+H```#V```!$@```2H```7.@
XM```%U@``!=X```7J```%\```!?8```7^```&"@``!AP```8R```&.```!CP`*
XM``9(```&;@``!H(```:D```('@``"#8```A$```(2@``"%X```B2```(J```F
XM"+X```C8```([@``"0@```D2```)&```"1X```DD```),@``"3P```E"```)1
XM2```"4X```E<```)9@``"6P```ER```)>```"88```F0```)E@``"9P```FB[
XM```)L```";H```G````)Q@``"<P```G:```)Y```">H```GP```)]@``"@0`R
XM``H2```*'```"B8```HP```*.@``"D0```I.```*6```"F(```IL```*=@``:
XM"H````J&```*F@``"K8```K6```*^```"R````M(```,_```#1P```TZ```-C
XM8@``#90```W````-V@``#>0```Z4```.M```#KH```[````.U@``#MP```[HF
XM```._@``#P0```^H```/K```#^X```_R```09```$&@``!$$```1(@``$28`Z
XM`!$N```11```$4P``!%>```19```$80``!&H```1T```$?H``!(\```23@``]
XM$E(``!):```2;```$G0``!*&```2C```$I0``!+$```2^@``$Q0``!,:```3Y
XM)```$T```!4````5"```%0X``!4N```5-```%58``!5@```5B@``%<0``!8`&
XM```6$@``%A@``!8X```66```%F@``!9R`````````_(```/K````=````_(`D
X+``/J`````````_(X:
X``
Xend
Xsize 7616
END_OF_FILE
if test 10702 -ne `wc -c <'listdevs.uu'`; then
    echo shar: \"'listdevs.uu'\" unpacked with wrong size!
fi
# end of 'listdevs.uu'
fi
if test -f 'zapdh0.doc' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'zapdh0.doc'\"
else
echo shar: Extracting \"'zapdh0.doc'\" \(8428 characters\)
sed "s/^X//" >'zapdh0.doc' <<'END_OF_FILE'
XZapDH0
X------
XBy John Davis, 
X
XVersion 1   October 1989
XVersion 1.1 April 1990
XVersion 1.2 24 June  1990
XVersion 1.3 26 June  1990 ( 1.2 didn't last long did it :-)
X
XWhat it does
X------------
XAll  you  2090  owners  ....   ever  get _really_ annoyed with that forced
XOldFileSystem  DH0 partition?  It's bad enough that you hvae to waste 400k
Xof  disk  space with the OFS partition, but what is really inconvenient is
Xthat  you can't cancel the device ( <assign dh0:  remove> sends you off to
Xmeet  the guru ), and therefore means you can't assign DH0:  to be the FFS
Xpartition.
X
XThis  in  turn  means that all those _nice_ programs with install programs
Xthat  want  to  install to DH0, or those equally _nice_ programs that give
Xyou  file requester gadgets only for DH0 aren't much fun at all ( okay ...
Xcall  me lazy, but newzapping three zillion programs so as DH0->FH0 is not
Xmy  idea  of  fun  ...   at this point I should say a big thank you to all
X_real_  programmers  whose  filereq's  know  what the _current_ dir is and
Xstart  there, or even better those that know how to scan a device list for
Xavailable  devices  <  not  hard  ...   see  the included example code for
XListDevs > )
X
XWell this program is just for you.  What it does is munge it's way through
Xthe  DOS  device list, looking for that 'orrible DH0 node .  When it finds
Xit, it alters the DeviceNodeName so as it's name is now ZH0.  You are then
Xfree to assign DH0:  onto your real main partition.
X
XOn  top  of  this,  if it detects that you have a df2:  floppy disk but no
Xdf1:   it will create a 'clone' drive called df1:.  This is linked (arghhh
X...   creeping unix terminology :-)) to df2:, and helps with programs that
Xonly have gadgets for df0:  and df1:, or if you (like me) have got used to
Xtyping 'df1:' when referring to the second drive (old a500 traits die hard
Xit seems)
X
XUsage
X-----
X
XPretty    simple   really,   just   chuck   ZAPDh0   somewhere   in   your
Xstartup-sequence.
X
XIt  is  _probably_ safer if you do it once you've assigned everything over
Xto the FFS partition, but it seems that it's pretty safe to put just about
Xanywhere  (as  any  existing dos locks to dh0:blah will still point to the
X_old_  DH0:   ...  it's just any new references that will get the assigned
XDH0).
X
Xeg .. in your startup-sequence
X
X     ZAPDh0
X     assign DH0: fh0:
X
XFrom  now  on  all references to DH0:  will refer to FH0:.  If you want to
Xacces the OFS partition, you still can (unlike if you use assigndev), it's
Xjust  now called ZH0:  ( and you can still access it via workbench).  Plus
X(  if  you  had a df2:  but no df1:  ) you'll find you've grown a df1:  as
Xwell.
X
XIncidentally,  should you want to STOP the floppy rename ( due to problems
Xor  if  you  just  don't like the idea ) then just add these lines to your
Xstartup-sequence instead of the above :
X 
X    ASSIGN DF1: sys:
X    ZapDH0:
X    ASSIGN DF1:
X    ASSIGN DH0: fh0:
X
X( I don't check to see if an existing DF1 is really a device or just a 
Xdir, so the assigned df1: will fool me into not touching the floppies )
X
XWarning
X-------
X
XThis  program  is what CBM tech support would probably describe as 'wildly
Xillegal'  ...   I  access structures in a manner I've got no right to.  As
Xsuch  I cannot guarantee it will work on any given setup, nor that it will
Xwork  in  future  releases  of  the  OS.   I have tested it on 2000's with
X2090's,on  500's with A590s and on C-Ltd drives, and it's worked ok on all
Xof them.
X
XBUT  -  there  is now warranty implied or express on this package!!  If it
Xcauses your hard disk to explode, killing your cat and causing you to have
Xa  nervous  breakdown,  it is NOT MY FAULT.  However, if you do experience
Xany  strange  side  effects  or  any  other  problems  with or due to this
Xprogram, get in touch so as I can see about remedying them.
X
X
X
XRevision History and Tech Notes
X-------------------------------
X
Xv 1.3 
X-----
X
XTime  for  a total rethink of how the df2:  floppy is renamed to be df1:!!
XPlus a general code cleanup ( was starting to look a tad loosed in there).
X
XPrevious versions just altered the name field of the df1:  devicelist node
Xin  place,  this worked great for the 99% of the programs that went by the
Xrules for working out what the host device was ( by host device I mean the
Xunderlying block structured device the filesystem level device sits on e.g
Xfor  df0:   the host device is trackdisk.device unit 0), but it turned out
Xthat  some  programs  were  wrongly  assuming that there would ALWAYS be a
Xcorrespondence  between the devname and the trackdisk devce unit acting as
Xhost  (  that  is df1:  is unit 1, df2:  unit 2 etc ...  which is normally
Xtrue, but assuming this is NOT an officially supported practice ).
X
X !  Included in this archive is ListDevs, a small example program that
X !  shows how to LEGALLY work out what the host device for a given dos
X !  device is, plus it shows how to extract a lot of other info on the
X !  host-dev  -  based  in  part  on  code posted to UseNet by Patrick
X !  Horgan.
X
X !  You  should NEVER assume a connection between device name and host
X !  device  and/or  it's  parameters  ..   cos sooner or later CBM are
X !  likely to change them ( to support higher densities or the like ).
X !  REMEMBER  ..   if they don't state it in the RKM, it's NOT safe to
X !  assume it!!!!
X
XThis  release gets around this problem by instead 'cloning' the devicelist
Xnode  for  df2:  back into the devicelist as df1:.  This effectively makes
Xdf1:  an alias for df2:, and still costs <100 bytes of memory.
X 
XThis allows ill-behaved programs (Virusx4 and the ARP install were notable
Xoffenders)  to work ( like why is it that two of my favourite programs, by
Xsome  of  the programmers I respect the most, have to be the one's that do
Xthings illegally :-( :-) ).
X
XI've  tested the cloned drives fairly extensively, and everything seems to
Xwork  as  it  should  with  them.   This  includes  correct operation thru
XWorkBench, and with format and diskcopy ( format df1:  puts a lock on BOTH
Xdf1:   and  df2:, diskcopy df1:  to df2:  is the same as diskcopy df1:  to
Xdf1:  in that it will prompt you to do disk-swaps ). 
X 
XHowever,  the  df2:   clone/rename  is  still  basically illegal operation
X(a.k.a  a  neat  hack  :-),  and it is possible some programs may not like
Xhaving a drive clone done.  Hence, if anyone experiences any anomalies due
Xto  using  Zapdh0_1.3, could they please contact me ( stating what program
Xhad difficulties ).
X
Xv 1.2 
X-----
X
XMy  conscience got the better of me, the floppy rename is now handled in a
Xsafer  manner  (unlike  1.1).   ZapDH0  now  first looks to see if there's
Xalready  a  DF1  in  the  system  ( an internal 3.5 floppy ).  If there is
Xalready  a  df1:   it  leaves  the floppies alone (otherwise if you had an
Xexternal  as  well  you'd  end up having two DF1:'s !!  having this happen
Xwasn't much fun).  If it can't find a df1:, it looks to see if it can find
Xa df2:  and renames it if possible.
X
Xv 1.1
X-----
X
XNothing  mind-blowing  I'm  afraid ( boy, what I'd give to get rid of that
Xslowfilesystem partition altogether, guess I'll just have to buy a 2091 ).
X
XAll  that's  changed  is  that ZapDH0's output is now cleaner, PLUS it now
Xalso  renames  Df2:  to be df1:  (for people like me with one internal and
Xone external floppy, but who are too used to df1:  being the second drive)
X
XIt still renames DH0 ( if found ) to be ZH0 (it simply traverses down the
XDOS devicelist and changes the name field in devicelist node for dh0: ->
Xzh0:  and for df2: -> df1:). To see exactly how this is done ( I smell
XBPTRs :-) refer to the source code
X
X
XLicence Agreement
X-----------------
X
XThere  is  none  !!   ZapDH0  is  absolutely  100%  Public  Domain (and is
Xdedicated  to  all  the  other  PD authors who help make the Amiga a great
Xmachine).
X
XIf  this  program  makes  you  happy, and makes your life a little easier,
Xthat's  good.   If  you  feel  obliged to thank me, then that's alright, I
Xalways  enjoy  getting  letters  from fellow amiga users.  If it makes you
Xunhappy  (  i.e.   it's got some bug I haven't found ), then also write to
Xme.
X
XMy contact adress is .....
X
X   John Davis
X   31 Clarence St
X   Christchurch 2
X   New Zealand
X
Xor you can find me on AmigaINFO BBS 
X                      NZ +3-371-531 1200/2400 Baud 24hrs a day 
X                      "home of the midnight coders"
X
Xor you can reach me via Internet/UseNet as CHEM194@canterbury.ac.nz
X
END_OF_FILE
if test 8428 -ne `wc -c <'zapdh0.doc'`; then
    echo shar: \"'zapdh0.doc'\" unpacked with wrong size!
fi
# end of 'zapdh0.doc'
fi
if test -f 'zapdh0.mod' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'zapdh0.mod'\"
else
echo shar: Extracting \"'zapdh0.mod'\" \(5239 characters\)
sed "s/^X//" >'zapdh0.mod' <<'END_OF_FILE'
XMODULE zapper;
X
X(* zap DH0 device node name     *)
X(* by J Davis v1.3 26 6/90      *)
X(* compiled using TDI m-2 3.01a *)
X
X
X(*
X  this is an attempt to get around the problem with 2090's where
X  the first partition MUST be OFS and is called DH0. This is a real
X  problem when you have a main FFS partition, on which you have all
X  your programs etc, and programs that insist on using DH0
X
X   This program zaps the DH0 node name so as it is called ZH0.
X   this is _extremely_ grungy, illegal etc ... but if it works
X   then it is a good way to cure the problem.
X*)
X
X(* v1.1 changes 
X   cleaned up screen output
X   now also renames df2: -> df1: for people like me who have
X   one internal and one external floppy drive
X*)
X
X(* v1.2 changes 
X        only renames df2: -> df1: if no df1: present already
X        gets around nastiness if you have 2 internals and an external :-)
X*)
X
X(* v1.3 changes
X        changed strategy on df2:, now clones the device node, links it
X        back into the device list and renames the clone
X*)
X
XFROM Memory          IMPORT AllocMem,MemReqSet,MemPublic,MemClear;
XFROM DOSLibrary      IMPORT DOSName,DOSBase,BPTR,BSTR;
XFROM DOSExtensions   IMPORT DosBaseRec,RootNode,DosInfo,DeviceList;
XFROM AmigaUtils      IMPORT PtrFromBPTR,BPTRFromPtr;
XFROM SYSTEM          IMPORT NULL;
XFROM InOut           IMPORT WriteString,WriteLn;
XFROM Libraries       IMPORT OpenLibrary,CloseLibrary;
XFROM DOSLibrary      IMPORT DateStampRec;
XFROM SYSTEM          IMPORT TSIZE;
X
XTYPE 
X
Xstring = ARRAY [0..255] OF CHAR;
Xstrptr = POINTER TO string;
X
X
XVAR
X
Xourdosbase : POINTER TO DosBaseRec; (* use this to access dosbase *)
Xinfoptr    : POINTER TO DosInfo;    (* points to DOSinfo node     *)
Xdevlistptr : POINTER TO DeviceList; (* points to current place is DOS devlist *)
Xnameptr    : strptr;
Xdf1present : BOOLEAN;               (* flag to indicate df1: is already mounted *)
Xcloneptr   : POINTER TO DeviceList; (* for cloning operation *)
X
XBEGIN
X
XDOSBase:=OpenLibrary(DOSName,0);   (* open the dos lib *)
X
XWriteString("ZAPDh0 v1.3 By John Davis 6/90");
XWriteLn;
X
Xourdosbase:=DOSBase;                              
X(* get a usable pointer onto dosbase *)
X
Xinfoptr:=PtrFromBPTR(ourdosbase^.dlRoot^.rnInfo); 
X(* get pointer dosinfo struct *)
X
Xdevlistptr:=PtrFromBPTR(infoptr^.diDevInfo);      
X(* get a pointer to start of devlist *)
X
Xdf1present:=FALSE;                                
X(* initially assume df1: is not present *)
X
XWHILE devlistptr<>NULL DO
X      (* scan down device list checking as we go *)
X          
X      nameptr:=PtrFromBPTR(BPTR(devlistptr^.dlName));
X      (* get pointer to nodename *)
X
X      IF (nameptr^[1]='D') AND (nameptr^[2]='H') AND (nameptr^[3]='0') THEN
X         (* this is dh0 so zap it *)
X         WriteString("   renamed DH0: to ZH0: ");
X         WriteLn;
X         nameptr^[1]:='Z'; (* we'll make it be called zh0: instead *)
X      END;
X      
X      IF (nameptr^[1]='D') AND (nameptr^[2]='F') AND (nameptr^[3]='1') THEN
X         (* found an existing df1 .. set flag so as not to try rename of df2 *)
X         WriteString("   found existing DF1:, will not attempt to rename DF2:");
X         WriteLn;
X         df1present:=TRUE;
X      END;
X      
X      devlistptr:=PtrFromBPTR(devlistptr^.dlNext); 
X      (* scan on down devlist *)
XEND;
X
XIF NOT df1present THEN 
X   (* didn't find df1:, see if we can find df2 
X      go back to start of devlist and re-scan
X   *)
X
X   devlistptr:=PtrFromBPTR(infoptr^.diDevInfo); 
X   (* get a pointer to the start of the devlist *)
X
X   WHILE devlistptr<>NULL DO
X         (* scan down device list checking as we go *)
X          
X         nameptr:=PtrFromBPTR(BPTR(devlistptr^.dlName));
X         
X         IF (nameptr^[1]='D') AND (nameptr^[2]='F') AND (nameptr^[3]='2') THEN 
X            (* this is df2:,so clone it *)
X  
X             WriteString("   found df2:, creating clone as df1:");
X             WriteLn;
X      
X             cloneptr:=AllocMem(TSIZE(DeviceList),MemReqSet{MemPublic,MemClear});
X            
X             (* first link in our clone on the devlist *)
X             cloneptr^.dlNext   :=devlistptr^.dlNext;
X             devlistptr^.dlNext :=BPTRFromPtr(cloneptr);
X            
X             (* now copy the rest of the df2 struct over *)
X             cloneptr^.dlType       :=devlistptr^.dlType;
X             cloneptr^.dlTask       :=devlistptr^.dlTask;
X             cloneptr^.dlLock       :=devlistptr^.dlLock;
X             cloneptr^.dlVolumeDate :=devlistptr^.dlVolumeDate;
X             cloneptr^.dlLockList   :=devlistptr^.dlLockList;
X             cloneptr^.dlDiskType   :=devlistptr^.dlDiskType;
X             cloneptr^.dlunused     :=devlistptr^.dlunused;
X      
X      
X             (* now alter the name of the clone to be df1: *)
X             nameptr:=AllocMem(4,MemReqSet{MemPublic,MemClear});
X             cloneptr^.dlName:=BPTRFromPtr(nameptr);
X      
X             (* now put BSTR 'df1'into name *)
X             nameptr^[0]:=CHR(3);
X             nameptr^[1]:='D';
X             nameptr^[2]:='F';
X             nameptr^[3]:='1';
X    
X         END; (* found df2 if *)
X       
X         devlistptr:=PtrFromBPTR(devlistptr^.dlNext); 
X         (* scan on down devlist *)
X
X    END; (* while *)
X
XEND; (* if not found df1 *)
X
XCloseLibrary(DOSBase);
X
XEND zapper.
END_OF_FILE
if test 5239 -ne `wc -c <'zapdh0.mod'`; then
    echo shar: \"'zapdh0.mod'\" unpacked with wrong size!
fi
# end of 'zapdh0.mod'
fi
if test -f 'zapdh0.uu' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'zapdh0.uu'\"
else
echo shar: Extracting \"'zapdh0.uu'\" \(7554 characters\)
sed "s/^X//" >'zapdh0.uu' <<'END_OF_FILE'
Xbegin 666 zapdh0
XM```#\P`````````#``````````(```0Z````<`````````/I```$.D[Y```,F
XM["(`<`9.1TYU3E;_Z"H`>`G:A#U%__XJ#E"%+47_Z$#N__@M3?_T+5;_\$YH/
XM+4C_[`QN``?__F<(#&X`"/_^9A0M;@`2__HJ+O_H4(4M1?_H3OH`0@QN``__K
XM_F8,3F@M:``(__I.^@`N#&X`$/_^9@Q"KO_Z0J[_\$[Z`!H,;@`)__YE"DYHZ
XM+5#_^D[Z``@M;@`*__I)^0```!@XKO_^0BP``BEN__H`!#EN__@`""EN__0`5
XM"BEN__``#BEN_^P`$BEN__``%AE\``$`&BYN_^@@.0```!0O0``"/KP``"Q6;
XM3FA9B$Y@3G-.7DYU2?D```!4*@PB17``+'@`!$ZN_=@J`"Q%.CD````8!D4!#
XM]4C%(@5.KO]P2I\O3O_\3FXM+P`"/1<M+__\2.;__")1((XL24S>/_\O7O_\I
XM/IXO7@`"3F8L;__\3G-*GR].__Q.;BTO``(]%RTO__Q(YO_\(E$@CD?Z`"HM^
XM"ST\3KD]/"<`/3Q&_"2.+$E,WC__+U[__#Z>+UX``DYF+&___$YS+T[__$YNG
XM+2\`!CTO``0M+__\2.;__"!?(F@`)"*.+$A,WC__+U[__#Z>+UX``DYF+&__,
XM_$YS1OPG`"X?#`<`)V8&3KD```(<#`<`)F8&3KD```$<#`<`)68&3KD```%.!
XM#`<`"F8(</A.N0````X,!P`+9@AP]TZY````#C`'1$!20$ZY````#DJ?50!F6
XM"`)7^/^#5TYS4P!F!#Z!3G-3`&8&1OP@`$YS4P!F!$YQ3G-3`&8*(`%.N0``Z
XM``Y.<TY6``!(Y_\`3.X`\``(2$0V!$A&O4-;YS0$,#Q_\,1`9P`!#C8&QD!G?
XM``$&UD($0S_P8P``_&L``/YP#\A`",0`!,Q`",8`!'0`/P,P!,#&2$`R!,+')
XM-@1(1L;&T(,V!$A'QL=(0=)#0D-(0]&#2$0V!,;&TD-(04)#2$/1@S8$2$;&A
XMQM"#-@3&Q]*#T8(V!$A'R,="1$A$TH31@C8%QL;2@]&"-@5(1L;&0D-(0]*#$
XMT8)(138%QL;2@]&"2$;,Q4A!TD9(04)&2$;1ADA'RL="14A%TH71@E"!T8(V]
XM'W@$>AD+`&<&4D0&0P`0%`#HND("Z*CHJ8*"6P4+`&8,U(+3@=&`!$,`"F,DD
XM2D-K*$A``D``#X!#2$!*'V<$=A\'P$CN``,`$$S?`/].7DYU5$]P`'(`8.IP5
XM!4ZY````!DY6``!(Y_\`3.X`\``(2$0R!`)!?_!G``".2$8P!@)`?_!G``!P+
XMD$$&0#_P:P``>#(&N4%;YP)&``\(Q@`$`D0`#PC$``1(1DA$<AYV`&$B)`-RG
XM%W8`819R">.KU8)K3@1``!!K```LUH/5@F!`WH?=AKR$7,G_^`/#GH6=A%O)J
XM_^YJ#-Z%W80#@TI!7<G_X$YU5(]T`'8`2.X`#``03-\`_TY>3G5P!4ZY````T
XM!GP`!H,```@`U89D"N*2XI,&0``0:^)R`#("?@ONJNZK[KE"`8:!2$("0@`/6
XMA$!(0DH?9[9P'P'"8+!.5@``2.?@`'``(BX`"&=(-#Q!X$A!,`%F"DA!,`%R'
XM``1"`0!"00Q``/]B#.&(X9F``4(!!$(`@$I`:PH$0@`0TH'10&KVZXCKF8`!!
XM0@%(0`)```^`0DA`2.X``P`(3-\`!TY>3G5.=4Y6``!(Y^``("X`"..8)``"U
XM@`#___\"@O\```!F$G``<@!([@`#``A,WP`'3EY.=>:*XHCBD@:".````"(`L
XMYHCFF0*!<````(""8-9.<4YQ3G$J`"/%````!"H((\4`````*@\CQ0````P@2
XM+P`$*@`CQ0````@J.0````R:N0````A0A2/%````4$GY```%^$?Y````5'H+\
XM%MQ7S?_\(_P```#R````%"QX``0B?`````!.KO[:*@`CQ0```!`C^0```!``>
XM``!,*CP```'**'D```!,*44`,BQX``1P!TZN_JIP!4ZN_JIP!DZN_JI"IT*G2
XM0J<B>0```%`O"4*G*D^>_``DG<YA"BYY````#'``3G5.^0``!BQD;W,N;&EB,
XM<F%R>0!.5@``+PX@+@`,(BX`""QX``1.KO\Z+%\J`"U%`!!.7DYU3OD```4L,
XM0KD```!B3OD```<03E8``"\.(FX`""QX``1.KOYB+%].7DYU3E8``"\.*&X`I
XM#"H,(D4@+@`(+'@`!$ZN_=@L7RH`+44`$DY>3G5.5@``*BX`".2-+44`#$Y>_
XM3G5.5@``*BX`".6%+44`#$Y>3G5.5O_^68\O/#NCUPI.N0``!.!)^0```.0H*
XMWRC?/7P``__^.B[__E-%YT5)^0```-0O-%`$+S10`"\Y```!<"\Y```!;$ZY]
XM```#D%"/.B[__N=%2?D```#42?10`"C?*-]2;O_^#&X`$?_^9K9.7DYU3OD`+
XM``8F3E8``%F/>@`O!4ZY```$>$GY```!7"C?*-]9CWH!+P5.N0``!'A)^0``R
XM`60HWRC?68]Z"B\%3KD```1X2?D```%L*-\HWV$`_T)9CWH*+P5.N0``!'A)A
XM^0```)PHWRC?68]Z9"\%3KD```1X2?D```"D*-\HWUF/*CP``"<0+P5.N0``4
XM!'A)^0```*PHWRC?+SD```"P+SD```"L+SD```"P+SD```"L3KD```)24(])3
XM^0```+0HWRC?+SD```"X+SD```"T+SD```"X+SD```"T3KD```)24(])^0``O
XM`+PHWRC?+SD```#`+SD```"\+SD```#`+SD```"\3KD```)24(])^0```,0H*
XMWRC?+SD```#(+SD```#$+SD```#(+SD```#$3KD```)24(])^0```,PHWRC?T
XM+SD```#0+SD```#,+SD```#0+SD```#,3KD```)24(])^0```-0HWRC?+SD`>
XM``#8+SD```#4+SD```#8+SD```#43KD```)24(])^0```-PHWRC?(_Q!(```V
XM````9B/\.Z/7"@```'XC_$+(``````!J(_PZ`Q)O````@B/\1AQ``````&XC&
XM_#A1MQ<```"&(_Q,OKP@````<B/\-J?%K````(HC_%H.&\H```!V(_PU!C>]W
XM````CB/\=)W%K@```'HC_#-6OY4```"20KD```"63EY.^0``"X9.5@``+PXL;
XM>0```&).KO_*+%\J`"U%``A.7DYU3E8``"\.+'D```!B3J[_?"Q?*@`M10`(,
XM3EY.=4Y6```O#B(N``@L>0```&).KO\H+%\J`$J%5L5$!1U%``Q.7DYU3E8`[
XM`"\.+'D```!B3J[_Q"Q?*@`M10`(3EY.=4Y6```O#B(N`!`D+@`,)BX`""QY!
XM````8DZN_[XL7RH`+44`%$Y>3G5.5@``+PXB+@`0)"X`#"8N``@L>0```&).5
XMKO_0+%\J`"U%`!1.7DYU3E;__"AN``Q*K@`(9@HY?/__``9.^@!V**X`""\,H
XM58\O+@`(3KD```E:6(\:'RA?2@5G"$(L``1.^@!.+PQ9CR\N``A"IWH!+P5..
XMN0``"9Q/[P`,*A\H7RU%__PO#%F/+RX`"$*G>O\O!4ZY```)G$_O``PJ'RA?)
XM*44`"$JL``A7Q40%&44`!$)L``9.7DYU3E;__"AN``I*E&-4+PQ9CR\41^X`-
XM""H++P5Z`2\%3KD```G$3^\`#"H?*%\M1?_\>@&ZKO_\9QPO#%F/3KD```D^-
XM*A\H7SE%``89?``!``1.^@`*0FP`!D(L``1.^@`(.7S__P`&3EY.=4Y6__HHC
XM;@`.2I1C`F`$3OH`@$)N__HZ+O_ZNFX`#&(4.B[_^B9N``A*,U``9P92;O_Z/
XM8.(O#%F/+Q0F;@`(*@LO!7H`.B[_^B\%3KD```G$3^\`#"H?*%\M1?_\>@`Z+
XM+O_ZNJ[__&<<+PQ9CTZY```)/BH?*%\Y10`&&7P``0`$3OH`"D)L``9"+``$D
XM3OH`"#E\__\`!DY>3G5.^0``!PI.5@``2KD```!B9AY9CS\\``I(>0``"[A"0
XMITZY```&4$_O``HCWP```&).7D[Y```+V&1O<RYL:6)R87)Y`$Y6``!".0``.
XM`71.7DYU3OD```N`3E8``&$`_^9.7D[Y```,3$Y6``!(>0```88?+@`(3KD`S
XM``I\7(].7DYU3E8``!\\``IA`/_<5(].7DYU3E8``$AY```!AC\N``PH;@`(Z
XM2%1.N0``"N9/[P`*2GD```&,5\5$!1/%```!=DY>3G5.^0``"]).5@``2KD`9
XM``!B9AY9CS\\``I(>0``#.!"ITZY```&4$_O``HCWP```&)".0```7A(>0``G
XM`7I9CTZY```)(DZY```)[%"/2?D```%Z1_D```&2)MPFW";<2'D```&&68].$
XMN0``"8!.N0``">Q0CTGY```!AD?Y```!GB;<)MPFW$Y>3OD```SR:6X^(```Q
XM;W5T/B``9&]S+FQI8G)A<GD`3OD```Q&3E8``%F//SP`"DAY```00D*G3KD`,
XM``903^\`"B/?````8C\\`!U(>0``$$Y.N0``#!1<CTZY```,`B/Y````8@``>
XM`:I9CRAY```!JBAL`"(O+``83KD```:(6(\CWP```:Y9CRAY```!KB\L``1.:
XMN0``!HA8CR/?```!LD(Y```!NDJY```!LF<"8`1.^@#068\H>0```;(O+``HS
XM3KD```:(6(\CWP```;8H>0```;8,+`!$``%F0"AY```!M@PL`$@``F8R*'D`#
XM``&V#"P`,``#9B0_/``72'D``!!N3KD```P47(].N0``#`(H>0```;89?`!:K
XM``$H>0```;8,+`!$``%F/"AY```!M@PL`$8``F8N*'D```&V#"P`,0`#9B`_M
XM/``V2'D``!"(3KD```P47(].N0``#`(3_``!```!NEF/*'D```&R+Q1.N0``#
XM!HA8CR/?```!LF``_R9*.0```;IF`F`$3OH!T%F/*'D```&N+RP`!$ZY```&V
XMB%B/(]\```&R2KD```&R9P)@!$[Z`:A9CRAY```!LB\L`"A.N0``!HA8CR/?5
XM```!MBAY```!M@PL`$0``68>*'D```&V#"P`1@`"9A`H>0```;8,+``R``-F)
XM`F`$3OH!0C\\`"1(>0``$,!.N0``#!1<CTZY```,`EF/>BPO!2\\``$``4ZY^
XM```&!%"/(]\```&\*'D```&R)GD```&\)I19CR\Y```!O$ZY```&=EB/*'D`J
XM``&R*)\H>0```;(F>0```;PG;``$``0H>0```;(F>0```;PG;``(``@H>0``Y
XM`;(F>0```;PG;``,``PH>0```;(F>0```;Q)[``01^L`$";<)MPFW"AY```!9
XMLB9Y```!O"=L`!P`'"AY```!LB9Y```!O"=L`"``("AY```!LB9Y```!O"=L?
XM`"0`)%F/>@0O!2\\``$``4ZY```&!%"/(]\```&V68\O.0```;9.N0``!G98:
XMCRAY```!O"E?`"@H>0```;88O``#*'D```&V&7P`1``!*'D```&V&7P`1@`"S
XM*'D```&V&7P`,0`#68\H>0```;(O%$ZY```&B%B/(]\```&R8`#^3B\Y````E
XM8DZY```&.%B/3EY.=0````!D;W,N;&EB<F%R>0!:05!$:#`@=C$N,R!">2!*:
XM;VAN($1A=FES(#8O.3```"`@(')E;F%M960@1$@P.B!T;R!:2#`Z(```("`@+
XM9F]U;F0@97AI<W1I;F<@1$8Q.BP@=VEL;"!N;W0@871T96UP="!T;R!R96YA9
XM;64@1$8R.@`@("!F;W5N9"!D9C(Z+"!C<F5A=&EN9R!C;&]N92!A<R!D9C$Z-
XM```````#[````%(``````````@```=@```'D```!\````?X```(,```"&```9
XM`DP```.,```$.@``!6P```6````%J@``!?0```8H```&-```!J@```;@```'\
XM#```!QP```<R```'2```!V(```=X```'D@``![H```?D```(#@``"#@```ABD
XM```(C```"1X```H2```*.```"E@```J<```*N@``"S(```M4```+@@``"YH`S
XM``NB```+M```"]0```OD```+^```#"H```Q(```,8```#&@```R&```,C```1
XM#*X```RT```,T```#.X```S^```-!@``#1H```T@```-*```#4@```UB```-'
XMD```#<P```W2```-V@``#AH```X@```.*```#D````YL```.E```#M8```[<S
XM```.Y```#O8```\:```/O```#](``!`<```0-````)L````!````G````-@`+
XM``#T```!#```!38```4^```%1@``!5(```58```%7@``!68```5R```%A```,
XM!9H```6@```%I```!;````76```%Z@``!BX```:N```&Q@``!M0```;:```&@
XM[@``!R(```<X```'3@``!V@```=^```'F```!Z(```>H```'K@``![0```?"/
XM```'S```!](```?8```'W@``!^P```?V```'_```"`(```@(```(%@``""``#
XM``@F```(+```"#(```A````(2@``"%````A6```(7```"&H```AT```(>@```
XM"(````B&```(E```"*(```BL```(M@``",````C*```(U```"-X```CH```(B
XM\@``"/P```D&```)$```"18```DJ```)1@``"68```F(```)L```"=@```N,P
XM```+K```"\H```ON```,&@``##0```P^```,4@``#'(```QX```,?@``#)0`_
XM``R:```,I@``#+P```S"```-$```#2X```TR```-.@``#5````U8```-:@``%
XM#7````UV```-A@``#9@```V>```-K```#;H```W@```-[```#?H```X(```.T
XM,```#C@```Y(```.4@``#F(```YT```.>@``#HH```Z<```.H@``#K````Z^B
XM```._@``#P0```\*```/%```#R(```\J```/,```#SP```]"```/3@``#U0`@
XM``]@```/9@``#WH```^````/C```#Y(```^>```/I```#\0```_,```/V@``O
XM#^0```_N```/^@``$`8``!`4```0)```$"X````````#\@```^L```!P```#[
X-\@```^H````````#\@8`:
X``
Xend
Xsize 5368
END_OF_FILE
if test 7554 -ne `wc -c <'zapdh0.uu'`; then
    echo shar: \"'zapdh0.uu'\" unpacked with wrong size!
fi
# end of 'zapdh0.uu'
fi
echo shar: End of archive 1 \(of 1\).
cp /dev/null ark1isdone
MISSING=""
for I in 1 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have the archive.
    rm -f ark[1-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0
-- 
Mail submissions (sources or binaries) to <amiga@uunet.uu.net>.
Mail comments to the moderator at <amiga-request@uunet.uu.net>.
Post requests for sources, and general discussion to comp.sys.amiga.