[comp.binaries.amiga] pstransformer

ain@j.cc.purdue.edu (Patrick White) (01/10/88)

Program Name:	pstransformer
Submitted By:	Phil Staub <phils@tekig.tek.com>
Summary:	This is an alternate version of the file "transformer" on the
		transformer disk.  It solves the extended memory problem
		transformer had.
Poster Boy:  Pat White  (ain@j.cc.purdue.edu)
Untested.

NOTES:
   Don't have a copy of transformer, so couldn't test it.


-- Pat White   (co-moderator comp.sources/binaries.amiga)
UUCP: j.cc.purdue.edu!ain  BITNET: PATWHITE@PURCCVM   PHONE: (317) 743-8421
U.S.  Mail:  320 Brown St. apt. 406,    West Lafayette, IN 47906

========================================


#	This is a shell archive.
#	Remove everything above and including the cut line.
#	Then run the rest of the file through sh.
#----cut here-----cut here-----cut here-----cut here----#
#!/bin/sh
# shar:    Shell Archiver
#	Run the following text with /bin/sh to create:
#	PSTransformer.doc
#	PSTransformer.uu
# This archive created: Thu Dec 17 23:02:43 1987
cat << \SHAR_EOF > PSTransformer.doc
		PSTransformer Version 1.0


Q: What is PSTransformer?

A: PSTransformer is a replacement for the file called "Transformer" on the 
AmigaTransformer distribution disk. It is distributed in source and binary
form in hopes of maximum distribution.



Q: Why should I use PSTransformer?

A: AmigaTransformer, as distributed, has 3 major problems. 

	1. It only works with version 1.1 of AmigaDos.
	2. It does not support expanded memory.
	3. It does not work if you have replaced your 68000
	   microprocessor with a 68010 or 68020.

PSTransformer attempts to solve these problems (and I hope is successful
in doing so. Early results seem to indicate it will work in far more 
cases than my original posting).


A little history. (Not for the feint of heart)

I made an earlier attempt to correct the first of these problems. At that 
time I didn't have either expanded memory or a 68010/020, so I was satisfied
with just making it work on 1.2. I posted that fix as ATPatch nearly a 
year ago.

Unfortunately, ATPatch made Transformer as specific to version 1.2 as it
originally was to 1.1. Also, neither of the other problems went away. So,
I set out to see what I could do to extend the function of the original 
patch to fix the other problems. 

Back in August, some of you may recall that I sent out a request for beta 
testers for a new version which hopefully would do just that. Having only 
the expansion memory which comes when you install the CMI KickStart 
Eliminator, (which is not auto-config) I felt it necessary to test it 
with some other configurations to see if it worked. 

Unfortunately, the answer was "no".

Back to the drawing board. Why didn't it work? I tried several things, and
eventually reached the following conclusion.

Transformer causes a "reset" instruction to be executed, to free up all 
of the memory except that which is absolutely needed by the basic services 
of the OS. This is because at the time Transformer was written, expansion
memory was either a) not widely available, and b) not auto-config.

To make sure that as few processes as possible are started up, thus using
memory which otherwise is available for DOS to use, a cool start vector 
is inserted which intercepts the boot-up sequence, apparently
before auto-config memory has been enabled. 

Before the reset, Transformer makes a list of all free memory, so that
it can re-build the free list when it gets control as a result of the 
cool reset. This works fine as long as memory is really at the addresses
in the free list before the reset. However, reset causes auto-config 
memory boards to become un-configured. Thus, the memory which we expect
to be there, isn't.

What options are there? Well, the first one was to find a way to re-
configure the auto-config memory. I was all for that one at first. 
Unfortunately, not having the 1.2 native developer update with auto-docs, 
and somehow not finding a way to spring free enough cash to get same,
I couldn't determine if there was a way to do it with an exec or 
expansion library call. And there simply wasn't enough room to patch
in a routine of my own to get the job done. Besides, remember I don't 
have any auto-config expansion memory to try it on. Any debugging of 
such a thing would have to be done by shipping a copy off to someone with
some expansion ram to have him/her try it, making the "test" phase of the
edit-compile-test-debug-edit cycle unacceptably long.

So I started searching for some other options. Finally, I began to wonder
if the reason for the reset was almost exclusively for the purpose
of freeing up memory. If so, I felt that, with the availability of extra 
memory these days being what it is, perhaps all I needed to do was to 
allocate memory out of what is available, up to the 640K that MSDOS 
allows.

Lo and behold, this was the key! Since a reset would never be executed,
auto-config memory would still be available. The only possible negative 
aspect here is users with minimum memory will not get as much memory 
for DOS use as would be possible when the reset is used. I strongly suspect
that this will become less and less of a problem as a greater and greater
percentage of Amiga owners have expanded memory.

Now, how to patch this into the Transformer emulator? I soon decided that
it would probably require more effort that the method I finally settled on:
a replacement startup module.




Q: How does PSTransformer work?

A: Basically, the original program "Transformer" was nothing more than 
a way to load the emulator, overlay the preferences from the 
ATPREFS file, then branch to the beginning of the segment 
containing the emulator. Memory allocation, the cool reset vector handler,
and the reset stuff were all in the emulator program. (Not to mention some
nasty stuff re-initializing some of the resources).

The intent of PSTransformer is to bypass the early phases of the emulator
startup, entering (with registers set appropriately) at some convenient 
point after all the mess previously pertaining to the reset is over.

PSTransformer now handles memory allocation in the startup module, as well
as overlaying the preferences. It also inserts a special priviledged 
instruction handler inspired by Scott Turner's DeciGel program (Thanks 
Scott!!) to allow the use of 68010 (and hopefully 68020) processors.
Then it branches off to a routine which sets up the registers
with emulator code, emulator data, and DOS workspace addresses and 
sizes, then enters the emulator. And away we go.

One other thing: I do something similar to what "FixHunk" does to ensure
that the emulator loads into CHIP ram. I found out the hard way that 
it must be there for MS-DOS to read 720K formatted disks in the outboard
drives. I don't understand why this is, and I'm not *that* anxious to find 
out.

Q: How do I use PSTransformer?

A: PSTransformer can be used from either WorkBench or CLI. 

First, of course, is to use a *copy* (not your original) AmigaTransformer
disk.

To use it from CLI, just put it on that disk, in the same directory as 
"Transformer", "AT1" and  "ATPREFS". Then type "PSTransformer".

I haven't provided an Icon to use from WorkBench. (This may sound silly,
but I've never made one! Kind of tells you how often I use WorkBench, 
doesn't it?) I would recommend that you either use the one that's already
there, renaming either the Icon or PSTransformer (no, I don't mind if you
rename my work), or build one yourself.


Q: How can I re-build the source?

A: PSTransformer was compiled, assembled and linked with the
Manx 3.40b package. A makefile is provided.


Q: Are there any problems with PSTransformer?

A: The question is bound to come up: 
	"Does PSTransformer work on the 500/2000?"

The answer is: "I'm not sure." I've got a report that DOS boots on a 
2000, but then the keyboard is locked out. I don't understand why. 
Perhaps that's one you 2000 hotshots can find for me. As for the 500, I have
no data.

Unfortunately, you don't get as much DOS ram available in a minimum
configuration (read: no expansion ram) as you used to. My suggestion 
here is to set up an extremely stripped down bootable disk and put the 
Transformer stuff on it. I mean *really* stripped down. 



Q: What about future versions?

A: I'm willing to support PSTransformer, if necessary, until (if?) the 
fixes are found for the suspected 2000 bug I mentioned above. Beyond that,
I'd have to see what kinds of support folks feel is necessary. This
project has taken up a major portion of my hacking time for a good
many months now, and, quite frankly, I'm tired of it, and I want to do
something else. Maybe I'll feel differently after a while.



Q: How about distribution?

A: I hereby grant authority for anyone to distribute this program in 
source and/or binary form. Period. I would appreciate getting credit
for my efforts, but since I'm distributing the source, there's not a lot
I can do to prevent you from removing my name. All I can say is to ask you
to please not do so.

In light of the questionable status of so called "copyrighted public domain"
software, I'm not putting any restrictions whatsoever on this. At least 
not for this version. Consider it my Christmas gift to all those on
Usenet who have provided me (sometimes without their knowledge) with 
a *lot* of information and wonderful programs.


If you have other questions or comments, you can reach me at:

	phils@tekigm2.TEK.COM

or my work or home address/phone:

	Phil Staub
Home:	14805 NE 77th St.
	Vancouver, Washington 98682
	(206) 254-9754

Office:	Tektronix, Inc.
	Accessories Engineering
	P.O. Box 3500, M/S C1-904
	Vancouver, Washington 98668
	(206) 253-5499
SHAR_EOF
cat << \SHAR_EOF > PSTransformer.uu

begin 644 PSTransformer
M```#\P`````````#``````````)```=_0```G$```%````/I```'?T[Z"?1.R
M5?_V2.<P`DAX`^U(>@283KD``!R"4$\CP````!Q*N0```!QF"DAZ!().N@;.O
M6$](>/__2'@`%"\Y````'$ZY```<N$_O``RPO/____]F"DAZ!&=.N@:D6$\33
M_`!`````,$AX``%(>0```#`O.0```!Q.N0``'-Q/[P`,L+S_____9@I(>@1(1
M3KH&<%A/2'C__TAX`!PO.0```!Q.N0``'+A/[P`,L+S_____9@I(>@0T3KH&(
M1EA/2'@`!$AY````!"\Y````'$ZY```<HD_O``RPO/____]F"DAZ!!U.N@8:L
M6$\O.0```!Q.N0``'")83T*Y````'"`Y````!.6`4(`CP`````1(>`/M2'H$=
M`$ZY```<@E!/(\`````<2KD````<9AY(>@/N3KD```^^6$\C_``*```````(%
M0KD````L8&Q(>`#(2'D````P+SD````<3KD``!RB3^\`#"\Y````'$ZY```<F
M(EA/0KD````<(_P````!````+!`Y````:TB`2,#`O````/_A@!(Y````;$B!,
M2,'"O````/_0@7(*XZ#0O````#XCP`````A.N0``'5)(>``"2'D!````3KD`,
M`!TN4$](>``$2'D!````3KD``!TN4$\@.0````1>@,"\____^"/`````!"`Y-
M````&%Z`P+S____X(\`````8(#D````$T+D````8(\`````,2'@``R\Y````Z
M#$ZY```=+E!/(\`````42'D``@`$3KD``!T,6$_`O/____@CP````!!(>0`"Y
M``).N0``'0Q83\"\____^"/`````%`2Y```(`````!0@.0```!"PN0````AL@
M#B`Y````$+"Y````%&T6(_P````%````("/Y````$````!A@%"/\`````P``5
M`"`C^0```!0````8+SD````,+SD````43KD``!UB4$]"N0```!1(>@)U3KD`,
M`!QT6$\CP`````1*N0````1F"DAZ`E].N@006$\@.0````3E@%B`(\``````X
M2KD````L9S`@>0`````CZ``"````)$AX`,@@>0````#1^0```"0O"$AY````7
M,$ZY```(%$_O``Q(>``X('D`````2&@"8$AY```'M$ZY```(%$_O``P@>0``"
M``#1_````I@CR`````A(>``#+SD````83KD``!TN4$\CP`````Q*N0````QFR
M"DAZ`=%.N@-N6$\@.0````BPN0```!AL""`Y````"&`&(#D````8(\`````(W
M+SD````@+SD````(3KD``!TN4$\CP````!!(>@&L3KD```^^6$](>@'63KD`F
M``^^6$](>@("3KD```^^6$](>@(,3KD```^^6$](>@(W3KD```^^6$\O.0``>
M``@O.0````1(>@)%3KD```^^3^\`#"\Y````#"\Y````&$AZ`E%.N0``#[Y/'
M[P`,+SD````0+SD````(2'H"74ZY```/OD_O``Q(>@)V3KD```^^6$](;?_V!
M3KD```@X6$\,+0!N__9G"`PM`$[_]F8*2'H"7TZZ`G983S/\`"``W_"6,_P!3
M``#?\)9.N0``!^Q,WT`,3EU.=4%4,0!#86XG="!F:6YD($%4,0!&:6QE(%-EV
M96L@97)R;W(Z($%4,0!&:6QE(%=R:71E(&5R<F]R.B!!5#$`1FEL92!3965KW
M(&5R<F]R.B!!5#$`1FEL92!296%D(&5R<F]R.B!!5#$`05104D5&4P!#86XG^
M="!F:6YD($%44%)%1E,N(%5S:6YG($1E9F%U;'0@=F%L=65S+@H`050Q`$-AU
M;B=T(&QO860@16UU;&%T;W(`0V%N)W0@9V5T(%)!32!F;W(@16UU;&%T;W(@O
M9&%T80H`"E!35')A;G-F;W)M97(L(%9E<G-I;VX@,2XP+"`Q,B\Q-R\X-R!BK
M>2!0:&EL(%-T875B"@H`4W1A<G1U<"!M;V1U;&4@9F]R($%M:6=A5')A;G-F&
M;W)M97(@=&\@<')O=FED92!S=7!P;W)T(`!F;W(@97AT96YD960@;65M;W)Y/
M+`H`-C@P,3`O-C@P,C`L(&%N9"!M=6QT:7!L92!O<&5R871I;F<@<WES=&5M=
M('9E<G-I;VYS+@H*``I!;6EG851R86YS9F]R;65R($UE;6]R>2!A;&QO8V%TP
M:6]N<PH`16UU;&%T;W(@8V]D92`Z("4Q,&QD(&)Y=&5S(&%T("4P.&QX"@!%S
M;75L871O<B!D871A(#H@)3$P;&0@8GET97,@870@)3`X;'@*`$1/4R!5<V5R*
M(%-P86-E.B`E,3!L9"!B>71E<R!A="`E,#AL>`H*`$-O;G1I;G5E/R!;>2]NR
M72``06UI9V%4<F%N<V9O<FUE<B!E>&ET:6YG"@``3E4``$CG,`(O+0`(2'H`[
MI$ZY```/OE!/2KD````$9PXO.0````1.N0``',Y83TJY````%&<4+SD````,=
M+SD````43KD``!UB4$]*N0````QG%"\Y````&"\Y````#$ZY```=8E!/2KD`'
M```09Q0O.0````@O.0```!!.N0``'6)03TJY````'&<.+SD````<3KD``!PBU
M6$].N0``'9I(>``!3KD``!I,6$],WT`,3EU.=25S"@!(YX"`(&\`"C`0`D#_*
MP`Q`0,!F"@C0``%,WP$!3G-,WP$!3OD`_```0?K_^B"X`"!!^O_.(<@`("9Y/
M````""AY````#"IY````$"0Y````&"8Y````!"XY````"$[K__!,[P,```0@Y
M+P`,L\AG#&,,T<#3P!,@4X!F^DYU$MA3@&;Z3G5.50``2.<X(B1M``A.N0``1
M"(0H`+"\_____V<0N+P````*9P@@2E**$(1@X$(2N+S_____9A"U[0`(9@IP>
M`$S?1!Q.74YU("T`"&#R3E4``$CG,`)(>0```+1.N0``"*)83TS?0`Q.74YU6
M3E4``$CG."(D;0`(+PI.N0``".8H`+"\_____UA/9R`@!&`44Y((Z@`#``QP?
M_TS?1!Q.74YU8-1*@&?Z68!GY"`$8.I.50``2.<P(B1M``@@4K'J``1E#B\*C
M81Q83TS?1`Q.74YU(%)2DA`02(!(P,"\````_V#F3E4``$CG.#(D;0`($"H`C
M#,`\`!AG"G#_3-],'$Y=3G4(J@`"``Q*J@`(9@HO"DZY```71%A/$"H`#$B`]
M2,`(```'9SQ!^0```+0F2!`K``Q(@$C`P+P```"$L+P```"$9@Y(>/__+PM.7
MN0``%@Q03]?\````%D'Y```";+?(9<PP*@`02,`O`"\J``@0*@`-2(!(P"\`#
M3KD```X:*`!*@$_O``QN%$J$9@1P"&`"<!"!*@`,</]@`/]@)*H`""!J``C1=
MQ"5(``0@4E*2$!!(@$C`P+P```#_8`#_/F%\0_D```)P1?D`````M<EF#C(\\
M`$]K"'0`(L)1R?_\(\\```#X+'@`!"/.````_$CG@(`(+@`$`2EG$$OZ``A.3
MKO_B8`9"I_-?3G-#^@`D3J[^:"/````!`&8,+CP``X`'3J[_E&`&3KD```I\`
M4$].=61O<RYL:6)R87)Y`$GY``!__DYU3E4``$CG,")(>0`!```P.0```FS!+
M_``&+P!.N0``'30CP````0103V880J=(>0`!``!.N0``'/)03RYY````^$YU/
M('D```$$0F@`!"!Y```!!#%\``$`$"!Y```!!#%\``$`"B!Y````^"`Y````H
M^)"H``10@"/````!""!Y```!"""\34%.6$*G3KD``!U$)$!*J@"L6$]G."\M9
M``PO+0`(+PI.N0``#`8C_`````$```$,('D```$$`&B````$('D```$$`&B`_
M```*3^\`#&!62&H`7$ZY```=PDAJ`%Q.N0``'7HCP````1`@>0```1!*J``D>
M4$]G%"!Y```!$")H`"0O$4ZY```<-EA/+SD```$0+PI.N0``#O0C^0```1``:
M``$44$].N0``'%(@>0```00@@$ZY```<F"!Y```!!"%```9G&DAX`^U(>@`Z4
M3KD``!R(('D```$$(4``#%!/+SD```$4+SD```$83KD````$0J=.N0``&DQ/#
M[P`,3-]$#$Y=3G4J`$Y5``!(YSPR)&T`$"!M``@@*`"LY8`H`"!$("@`$.6`F
M)D`0$TB`2,#0K0`,5(`CP````1Q"IR\Y```!'$ZY```=-"/````!(%!/9@A,9
MWTP\3EU.=1`32(!(P"H`+P4@2U*(+P@O.0```2!.N0``#?A(>@%^('D```$@R
MT<4O"$ZY```.Y"\M``PO"B\Y```!($ZY```.P"!Y```!($(P6``C_`````$`I
M``$8('D```$@T<4F2%*+)$M/[P`@$!-(@$C`*@"PO````"!G(+J\````"6<8O
MNKP````,9Q"ZO`````UG"+J\````"F8$4HM@S`P3`"!M``".#!,`(F8R4HL@N
M2U*+$!!(@$C`*@!G("!*4HH0A;J\````(F80#!,`(F8$4HM@!D(J__]@`F#2>
M8$0@2U*+$!!(@$C`*@!G,+J\````(&<HNKP````)9R"ZO`````QG&+J\````_
M#6<0NKP````*9P@@2E**$(5@PB!*4HI"$$J%9@)3BU*Y```!&&``_SI"$D*G7
M(#D```$84H#E@"\`3KD``!TT(\````$44$]F"D*Y```!&&``_J!Z`"9Y```!C
M(&`>(`7E@"!Y```!%"&+"``O"TZY```4AE*`U\!83U*%NKD```$8;=H@!>6`I
M('D```$40K`(`&``_EX@`$SO`P``!"`((B\`#&`"$-E7R?_\9P9206`"0AA1^
MR?_\3G5.50``2.<\(B@M``A.N0``&=9R!B`$3KD``!O^)$#5^0```01*A&T0(
M,#D```)L2,"X@&P$2I)F%"/\`````@```21P_TS?1#Q.74YU,"H`!$C`P+P`-
M```#L+P````!9@XC_`````4```$D</]@UB\M`!`O+0`,+Q).N0``'*@J`+"\(
M_____T_O``QF$$ZY```<7"/````!)'#_8*@@!6"D,#Q__V`$,"\`#B!O``1*[
M&&;\4T@B;P`(4T`0V5?(__QG`D(0("\`!$YU(&\`!"`((F\`"!#99OQ.=4Y5:
M``!(YSXR)&T`"$*G2'H`I$ZY```=B"/````!*%!/9@A,WTQ\3EU.=2!M``PBH
M:``D+RD`!$ZY```=[B@`6$]G6DAZ`'T@1"\H`#9.N0``'=`F0$J`4$]G.$AX<
M`^TO"TZY```<B"P`4$]G)B`&Y8`J`"!%)6@`"`"D)48`G$AX`^U(>@!$3KD`$
M`!R()4``H%!/+P1.N0``'>!83R\Y```!*$ZY```=&D*Y```!*%A/8`#_<&EC;
M;VXN;&EB<F%R>0!724Y$3U<`*@!.50``2.<P`DAM``PO+0`(2'D``!283KD`?
M`!!R3^\`#$S?0`Q.74YU3E4``$CG."(D;0`0#*T````$`!1F""!M``@H$&`4^
M2JT`#&\((&T`""@08`8@;0`(*!!"K0`42JT`#&P21*T`#$J$;`I$A"M\````N
M`0`4(BT`#"`$3KD``!0@0?D````@4XH4L`@`(BT`#"`$3KD``!0L*`!FV$JMU
M`!1G!E.*%+P`+2`*3-]$'$Y=3G5.5?\42.<X,B1M``@F;0`,0JW_^"MM`!#_2
M_"!+4HL0$$B`2,`H`&<``SRXO````"5F``,60BW_(BM\`````?_T*WP````@,
M__`K?```)Q#_["!+4HL0$$B`2,`H`+"\````+6800JW_]"!+4HL0$$B`2,`HI
M`+B\````,&84*WP````P__`@2U*+$!!(@$C`*`"XO````"IF&B!M__Q8K?_\J
M*U#_Z"!+4HL0$$B`2,`H`&`X0JW_Z&`D<@H@+?_H3KD``!O^T(20O````#`K_
M0/_H($M2BQ`02(!(P"@`0?D````S"#```D@`9LZXO````"YF9B!+4HL0$$B`(
M2,`H`+"\````*F8:(&W__%BM__PK4/_L($M2BQ`02(!(P"@`8#A"K?_L8"1R\
M"B`M_^Q.N0``&_[0A)"\````,"M`_^P@2U*+$!!(@$C`*`!!^0```#,(,``"/
M2`!FSBM\````!/_DN+P```!L9A8@2U*+$!!(@$C`*``K?`````3_Y&`4N+P`\
M``!H9@P@2U*+$!!(@$C`*``@!&```((K?`````C_X&`<*WP````*_^!@$BM\S
M````$/_@8`@K?/____;_X"\M_^1(;?\B+RW_X"\M__Q.NOVD*T#_W"`M_^31G
MK?_\3^\`$&!<(&W__%BM__PK4/_<+RW_W$ZY```4ABM`_^183V!*(&W__%BM4
M__PH$$'M_R$K2/_<$(1@*)"\````8V?B4X!GDI"\````"V<`_VQ9@&>R58!G&
M`/]L5X!G`/]P8,Q![?\BD>W_W"M(_^0@+?_DL*W_[&\&*VW_[/_D2JW_]&=P6
M(&W_W`P0`"UG"B!M_]P,$``K9C0,K0```##_\&8J4ZW_Z"!M_]Q2K?_<$!!(D
M@$C`+P!.DK"\_____UA/9@IP_TS?3!Q.74YU8!@O+?_P3I*PO/____]83V8$B
M</]@XE*M__@@+?_H4ZW_Z+"M_^1NVD*M_^!@)"!M_]Q2K?_<$!!(@$C`+P!.+
MDK"\_____UA/9@1P_V"J4JW_X"!M_]Q*$&<*("W_X+"M_^QMRB`M_^#1K?_XA
M2JW_]&8J8!I(>``@3I*PO/____]83V8&</]@`/]P4JW_^"`M_^A3K?_HL*W_:
MY&[88!@O!$Z2L+S_____6$]F!G#_8`#_2%*M__A@`/RX("W_^&``_SA(YT@`B
M0H1*@&H$1(!21$J!:@9$@0I$``%A/DI$9P)$@$S?`!)*@$YU2.=(`$*$2H!J\
M!$2`4D1*@6H"1(%A&B`!8-@O`6$2(`$B'TJ`3G4O`6$&(A]*@$YU2.<P`$A!-
M2D%F($A!-@$T`$)`2$"`PR(`2$`R`H+#,`%"04A!3-\`#$YU2$$F`2(`0D%()
M04A`0D!T#]"`TX&V@6($DH-20%'*__),WP`,3G4@;P`$(`A*&&;\D<`@"%.`'
M3G5.50``2.<P`DAY````RB\M``A.N0``%+I03TS?0`Q.74YU3E4``$CG.`(H#
M+0`(+RT`#"\$3KD``!4(N+P````*4$]F*B!M``P0*``,2(!(P`@```=G&$AX<
M__\O+0`,3KD``!8,4$],WT`<3EU.=6#V3E4``$CG,"(D;0`,(%*QZ@`$91P@L
M+0`(P+P```#_+P`O"DZZ`.!03TS?1`Q.74YU(%)2DA`M``L0@$B`2,#`O```"
M`/]@XDY5``!(YS`B0?D```"T)$@@2M7\````%B\(81183T'Y```";+7(9>A,A
MWT0,3EU.=4Y5``!(YS@B)&T`"'@`(`IF"G#_3-]$'$Y=3G5**@`,9UH(*@`"1
M``QG#$AX__\O"F%<*`!03Q`J``U(@$C`+P!.N0``&YZ(@`@J``$`#%A/9PPO0
M*@`(3KD``!A(6$\(*@`%``QG%B\J`!).N0``&0XO*@`23KD``!A(4$]"DD*J*
M``1"J@`(0BH`#"`$8(9.5?_^2.<X(B1M``A!^O\T(\@```$L""H`!``,9PIPE
M_TS?1!Q.74YU""H``@`,9S0H$IBJ``@O!"\J``@0*@`-2(!(P"\`3KD``!E`1
ML(1/[P`,9Q`(Z@`$``Q"DD*J``1P_V"\#*W_____``QF$`BJ``(`#$*20JH`]
M!'``8*)*J@`(9@HO"DZY```71%A/#&H``0`09C(;;0`/__](>``!2&W__Q`J&
M``U(@$C`+P!.N0``&4"PO`````%/[P`,9I0@+0`,8`#_6B2J``@P*@`02,#0'
MJ@`()4``!`CJ``(`#"!24I(0+0`/$(!(@$C`P+P```#_8`#_*DY5``!(YS`B%
M0?D```"T)$A**@`,9QS5_````!9!^0```FRUR&4*<`!,WT0,3EU.=6#>0I)"%
MJ@`$0JH`""`*8.A.5?_\2.<P(B1M``A(>`0`3KD``!@P*T#__%A/9AHU?``!>
M`!`@2M'\````#B5(``A,WT0,3EU.=35\!```$`CJ``$`#"5M__P`"!`J``U(;
M@$C`+P!.N0``&)I*@%A/9P8`*@"```Q@R$Y5``!(YS`R)'D`````8!8F4B`JU
M``10@"\`+PI.N0``'6A03R1+(`IFYD*Y`````$S?3`Q.74YU3E4``$CG,")!=
M^O^^(\@```$P0J<@+0`(4(`O`$ZY```=-"1`2H!03V8*<`!,WT0,3EU.=22Y;
M`````"5M``@`!"/*`````"`*4(!@X$Y5``!(YS`"+RT`"&&F6$],WT`,3EU.+
M=4Y5``!(YS`RE\LD>0````!@#B!M``A1B+'*9Q(F2B12(`IF[G#_3-],#$Y=Y
M3G4@"V<$)I)@!B/2`````"`J``10@"\`+PI.N0``'6AP`%!/8-1.50``2.<P#
M(G(&("T`"$ZY```;_B1`U?D```$$2JT`"&T4,#D```)L2,`B+0`(LH!L!$J2Z
M9A0C_`````(```$D</],WT0,3EU.=7(&("T`"$ZY```;_B!Y```!!"\P"`!.8
MN0``'&9*@%A/9P1P`6`"<`!@SDY5``!(YS`"+RT`"$ZY```<1$J`6$]F%DZY+
M```<7"/````!)'#_3-]`#$Y=3G5P`&#T3E4``$CG/"(H+0`(3KD``!G6<@8@S
M!$ZY```;_B1`U?D```$$2H1M$#`Y```";$C`N(!L!$J29A0C_`````(```$D)
M</],WT0\3EU.=3`J``3`?``#9@XC_`````4```$D</]@X"\M`!`O+0`,+Q).T
MN0``'.(J`+"\_____T_O``QF$$ZY```<7"/````!)'#_8+(@!6"N3E7__$CG1
M,`)(>!``0J=.N0``';(K0/_\"```#%!/9QI*N0```0QF#"`M__Q,WT`,3EU.5
M=4ZY```:%'``8.Y.50``2.<P`DAX``1(>@`F3KD``!R8+P!.N0``'.)(>``!(
M3KD``!I,3^\`$$S?0`Q.74YU7D,*`$Y5``!(YS`"2KD```$L9P@@>0```2Q."
MD"\M``A.N0``&GA83TS?0`Q.74YU3E7__$CG.`(K;0`(__Q*N0```01G-G@`8
M8`PO!$ZY```;GEA/4H0P.0```FQ(P+B`;>@P.0```FS!_``&+P`O.0```01.,
MN0``'6A03TJY```!,&<(('D```$P3I!*N0```31G#B\Y```!-$ZY```=(%A/=
M2KD```$X9PXO.0```3A.N0``'2!83TJY```!/&<.+SD```$\3KD``!T@6$\LN
M>``$""X`!`$I9Q0O#4OZ``I.KO_B*E]@!D*G\U].<TJY```!$&8X2KD```$@$
M9RXO.0```1PO.0```2!.N0``'6@@.0```1A2@.6`+P`O.0```11.N0``'6A/?
M[P`08!1.N0``'5@O.0```1!.N0``':183R`M__PN>0```/A.=4S?0!Q.74YUV
M3E4``$CG/B(H+0`(<@8@!$ZY```;_B1`U?D```$$2H1M$#`Y```";$C`N(!L0
M!$J29A0C_`````(```$D</],WT1\3EU.=3`J``3`?(``9@HO$DZY```<*%A/E
M0I)P`&#>2.=P`#0!Q,`F`4A#QL!(0T)#U(-(0,#!2$!"0-""3-\`#DYU3OD`A
M`!PH(B\`!"QY```!`$[N_]PB+P`$+'D```$`3N[_@B(O``0L>0```0!.[O^X\
M+'D```$`3N[_RBQY```!`$[N_WPB+P`$+'D```$`3N[_*"(O``0L>0```0!.O
M[O]J3OD``!R(3.\`!@`$+'D```$`3N[_XBQY```!`$[N_\1.^0``'*A,[P`.#
M``0L>0```0!.[O_63OD``!R^3.\`#@`$+'D```$`3N[_OB(O``0L>0```0!.1
M[O]D3OD``!SB3.\`#@`$+'D```$`3N[_T$CG`01,[R"```PL>0```/Q.KO^4?
M3-\@@$YU(B\`!"QY````_$[N_RA.^0``'2`B;P`$+'D```#\3N[^8D[Y```=A
M-$SO``,`!"QY````_$[N_SHB;P`$+'D```#\3N[^VD[Y```=6"QY````_$[NO
M_WQ.^0``'6@B;P`$("\`""QY````_$[N_RX@;P`$+'D```#\3N[^C"QY````<
M_")O``0@+P`(3N[]V"QY````_$[N_W8B;P`$+'D```#\3N[^ADSO``,`!"QYH
M````_$[N_LX@;P`$+'D```#\3N[^@$SO`P``!"QY```!*$[N_Z`@;P`$+'D`5
M``$H3N[_IB!O``0L>0```2A.[O^R```#[````$<````!````'@```"0````^/
M````<@```)P```#(````Z@```/@```$>```!)````50```%D```!<@```?0`>
M``("```"#@```BP```*\```"R@```MP```+B```"]````OX```,,```#'@``T
M`T````-:```#9@```W````-^```#A````\P```0.```$*```!"X```1"```'0
M&```!R````<N```'/```!TH```=2```'6```!V8```=T```'@@``!XH```?NW
M```']```!_H```@````(C@``"6````F2```)^@``"G8```J,```.1```$$(`;
M`!%0```1O@``%*(``!58```5;@``%PX``!<B```8O@``&6H``!J@```:K```-
M&\(```"(`````````!8```!$````>````*(```#.````\````18```$P```!@
M6@```6H```&V```!Q@```=@```(D```".````E(```+"```"U````S(```-*L
M```#4````W8```/$```#U@```^(```/N```#^@``!`8```0>```$.```!%(`]
M``1@```$;```!)X```<0```')@``!T(```=>```'>@``!Y````>8```'H@``(
M"$8```B4```(L@``"4H```F$```)L@``"F````J8```*L```"P@```LB```+0
M5```"UX```N$```+E```"Z8```NT```+S@``"^P```OT```,1```#'(```R&*
M```,F```#9P```W0```.*```#C(```Z4```.J```#P@```\L```/0@``#U8``
M``]\```/B@``#Y@```_0```/U@``$#P``!!4```1,@``$:```!)H```4K```M
M%,X``!3X```5P```%=8``!7J```5]```%E0``!:4```6O```%U8``!>:```71
MR@``&`(``!B0```8J@``&.P``!C\```9'```&2@``!E.```96```&;```!G$:
M```9Y@``&@P``!HF```:+@``&C@``!IJ```:E@``&KX``!KD```:^@``&Q``(
M`!M4```;;```&W@``!N$```;L```&_(``!PD```<A```'*0``!RZ```<W@``P
M'1P``!TP```=5```'60```"G`````@```&(```!L````P@```/X```$(```!Y
M/````4(```%.```!?````8(```&4```!L````>````'N```""````A0```(>D
M```"1@```F````)J```"<````G8```)^```"A````I````*6```"F@```J8`T
M``*L```"L````K8```,$```#%````R0```,L```#E@```YP```.D```#K```:
M`[(```.X```#O@``!!0```1(```'-@``!VX```@&```(#```"@````H8```*?
M(@``"DP```J>```*N```"L````K*```*U@``"N(```KH```*]```"OH```LLW
M```+,@``"SX```MD```+:@``"W@```N,```+F@``"YX```NL```+N@``"]0`M
M``O@```+Y@``##8```P^```,2@``#&P```Q\```,D@``#)X```RL```,L@``\
M#8(```V0```-H@``#:P```VX```-Q```#=X```WJ```..@``#E@```Z````.6
MK@``#PX```^2```/G@``%AX``!>V```7V```%_(``!@:```8)@``&%0``!B`&
M```8L@``&-8``!CR```9+@``&6```!E^```9G```&<H``!GX```:5@``&EX`J
M`!J(```:N```&L8``!K.```:U@``&MX``!KL```:]```&P(``!L*```;.```-
M&T```!M(```;3@``&UH``!MF```;?@``&Y```!NX```;U@``'"X``!P\```<C
M2@``'%0``!Q>```<;```''H``!R0```<F@``'+```!S&```<U```'.H``!S^R
M```=$@``'28``!T\```=2@``'5H``!UR```=@```'8H``!V<```=J@``';H`3
M`!W(```=V```'>8``!WT`````````_(```/J````G```````````````````L
M````````````````H\X`````,#$R,S0U-C<X.6%B8V1E9@```"`@("`@("`@3
M(#`P,#`P("`@("`@("`@("`@("`@("`@D$!`0$!`0$!`0$!`0$!`0`P,#`P,<
M#`P,#`Q`0$!`0$!`"0D)"0D)`0$!`0$!`0$!`0$!`0$!`0$!`0%`0$!`0$`*0
M"@H*"@H"`@("`@("`@("`@("`@("`@("`D!`0$`@``````````````````$`[
M`````0`````````````````````!`0````$``````````````````````0(`'
M```!````````````````````````````````````````````````````````!
M`````````````````````````````````````````````````````````````
M`````````````````````````````````````````````````````````````
M`````````````````````````````````````````````````````````````
M`````````````````````````````````````````````````````````````
M`````````````````````````````````````````````````````````````
M`````````````````````````````````````````````````````````````
M`````````````````````````````````````````````````````````````
I`````````````````````````````!0``````_(```/K````4````_(`\
``
end
size 9896
SHAR_EOF
#	End of shell archive
exit 0