amiga-request@ab20.larc.nasa.gov (Amiga Sources/Binaries Moderator) (04/17/91)
Submitted-by: "John Davis, chem dept, Uni of Canty, NZ" <CHEM194@cantva.canterbury.ac.nz> Posting-number: Volume 91, Issue 086 Archive-name: utilities/backdrop-1.2/part01 [ includes uuencoded executables ...tad ] BackDrop12 and Wb102 This pair of programs allow you to force Workbench 1.3 to run in a normal window (as opposed to the backdrop window it usually uses), and then put up a patterned backdrop window behind it (and all other windows), similar to the 'desktop pattern' on the Mac and Windows/3. Having patterned backdrops (as opposed to the blank screen normally used) not only looks nicer, but it can make it easier to deal with lots of windows (gives them something to contrast against). wb102 is a minimal hack in assembler to force workbench into a window - source for Hisoft DevPac v2 assembler is included. backdrop12 allows you to setup a backdrop pattern window, features are - user specifiable fill pattern and colour - ability to change patterns on the fly - support for NTSC/PAL/overscan etc modula-2 source (for TDI 3.01) is included. #!/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 2)." # Contents: backdrop.doc backdrop.mod backdrop.uu block.pattern # hatch.pattern startup-sequence.example wb102.doc wb102.s wb102.uu # wmove.uu # Wrapped by tadguy@ab20 on Tue Apr 16 15:12:42 1991 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f 'backdrop.doc' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'backdrop.doc'\" else echo shar: Extracting \"'backdrop.doc'\" \(2817 characters\) sed "s/^X//" >'backdrop.doc' <<'END_OF_FILE' XBackDrop v1.2 X------------- XBy J Davis 91/04/14 X X XWhat's it do? X------------- X XHave you ever wished you could have patterned backdrops behind all the Xwindows on workbench (like the Mac or Windows3)? Well this program is the Xanswer, it lets you create a backdrop window with colours and a fill Xpattern of your own chosing. X XWhat do you need? X----------------- X XTo be able to actually see our backdrop it's necessary to get workbench to Xload into a normal (sizable, draggable) window. Under KS1.3, workbench Xusually opens as a Backdrop, borderless window, which would obscure our Xbackdrop. X XTo get around this you use WB (a separate utility by myself, included in Xthis archive). You may also wish to use the provided WMove and WSize Xutilities in conjunction in your startup-sequence to automatically shrink Xdown the workbench window (see included example startup-sequence) X XUsage X----- Xsyntax: X backdrop [fg bg] [patternfile] X XIf you run backdrop with no parameters, it will install the backdrop Xwindow using colours 0 and 2, and the default 'checkerboard' pattern X XYou may optionally supply either the two colours to use ( these colours Xare in the range 0 to 3 ) X X e.g. backdrop 1 3 X Xor the name of a file containing a custom fill pattern X X e.g. backdrop s:hatch.pattern X Xor you may combine both options X X e.g. backdrop 1 0 s:block.pattern X Xtyping 'backdrop ?' will give you a brief summary of the command syntax. X XThe format of the pattern file is 16 words, represented in binary with one Xword per line X X e.g. 1111111111111111 X 0000000010000000 X 0000000010000000 X 0000000010000000 X 1111111111111111 X 1000000000000000 X 1000000000000000 X 1000000000000000 X 1111111111111111 X 0000000010000000 X 0000000010000000 X 0000000010000000 X 1111111111111111 X 1000000000000000 X 1000000000000000 X 1000000000000000 X(see included example pattern files) X XOnce you have installed backdrop, you may modify the options on the fly by Xre-running backdrop (this won't open a new backdrop window, just update Xthe existing one). X XImplementation Details X---------------------- X Xthis program simply opens it's own backdrop/borderless window on workbench Xto hold the backdrop pattern. Memory usage is about 21k for a Xnon-interlaced PAL screen, and 42k for an interlaced display (due to a Xsmartrefresh window being used to minimise processor overhead and refresh Xtimes). X XScreen size is detected on the fly, so it should work with over-scan etc. X XIf you have any problems with the program , I can be contacted at the Xfollowing addresses : X Xinternet : chem194@canterbury.ac.nz X Xbbs email : AmigaINFO BBS, Christchurch NZ X (+64) (03) 3371-531 X END_OF_FILE if test 2817 -ne `wc -c <'backdrop.doc'`; then echo shar: \"'backdrop.doc'\" unpacked with wrong size! fi # end of 'backdrop.doc' fi if test -f 'backdrop.mod' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'backdrop.mod'\" else echo shar: Extracting \"'backdrop.mod'\" \(11615 characters\) sed "s/^X//" >'backdrop.mod' <<'END_OF_FILE' XMODULE backdrop; X X(* X X simple program to put up a patterned backdrop window on workbench, X for use with wb1.02 (wb1.02 needed to get wb1.3 into own window) X X v1.0 - initial version , hard-coded for PAL screen size, quick and dirty X v1.1 - now picks up screen size on the fly (works with overscan,NTSC etc) X can change colours on the fly (finds old window and refreshes) X v1.2 - user definable fill patterns added X X*) X XIMPORT IntuitionBase; XIMPORT Intuition; XFROM Memory IMPORT MemReqSet,MemPublic,AllocMem; XFROM Windows IMPORT OpenWindow; XFROM Libraries IMPORT OpenLibrary,CloseLibrary; XFROM SYSTEM IMPORT NULL,WORD,ADDRESS,ADR,BYTE; XFROM InOut IMPORT WriteString,WriteLn,WriteCard,OpenInputFile,Done,CloseInput,ReadString; XFROM GraphicsLibrary IMPORT GraphicsBase,GraphicsName,DrawingModeSet,DrawingModes; XFROM Pens IMPORT RectFill,SetAPen,SetBPen,SetDrMd; XFROM PenUtils IMPORT SetAfPat,SetDrPt; XFROM CommandLine IMPORT CLStrings,GetCL; XFROM Conversions IMPORT ConvertFromString; XFROM Strings IMPORT Compare,CompareResults; X XCONST X Xscreenname = "Workbench Screen"; Xwindowname = "BackDrop"; X X(* turn this on for verbose debugging info *) Xdebug = FALSE; X XTYPE X Xstring = ARRAY [0..80] OF CHAR; Xstrptr = POINTER TO string; X XVAR X Xnw : Intuition.NewWindow; Xwd : Intuition.WindowPtr; Xpat : ARRAY [0..15] OF WORD; X Xscreenptr : Intuition.ScreenPtr; X Xfound : BOOLEAN; X Xwidth : CARDINAL; Xheight : CARDINAL; X Xargc : CARDINAL; Xargv : ARRAY [0..2] OF CLStrings; X Xpatname : CLStrings; Xusepattern : BOOLEAN; X Xibaseptr : POINTER TO IntuitionBase.IntuitionBase; X Xfgcol,bgcol : CARDINAL; Xt : LONGCARD; Xdone : BOOLEAN; X Xtitleptr : strptr; X X(* -------------------------- usage ----------------------- *) X XPROCEDURE usage; XBEGIN XWriteString("Backdrop v1.2 by J Davis 04/91"); XWriteLn; XWriteString("Usage is : backdrop [fg bg] [pat]"); XWriteLn; XWriteString(" fg and bg specify the colours to use for the pattern"); XWriteLn; XWriteString(" if omitted 0 and 2 are used"); XWriteLn; XWriteLn; XWriteString(" pat is the name of the file containing the backdrop pattern"); XWriteLn; XWriteString(" if omitted a single pixel checkerboard is used"); XWriteLn; XWriteLn; XEND usage; X X(* ------------------------- strcmp ---------------------- *) X XPROCEDURE strcmp(sp1 : strptr; s2 : ARRAY OF CHAR):BOOLEAN; XBEGIN XIF debug THEN X WriteString("checking : "); X WriteString(sp1^); X WriteString(" against : "); X WriteString(s2); X WriteString(" "); XEND; X IF Compare(sp1^,s2)=Equal THEN X IF debug THEN X WriteString("equal"); X WriteLn; X END; X RETURN TRUE; X ELSE X IF debug THEN X WriteString("not equal"); X WriteLn; X END; X RETURN FALSE; X END; XEND strcmp; X X(* ------------------------- getpattern --------------------- *) X XPROCEDURE getpattern(name : CLStrings ; window : Intuition.WindowPtr ; VAR pattern : ARRAY OF WORD): BOOLEAN; X(* read in a pattern definition from file 'name' X and set it as the windows fill pattern X if everything is ok returns TRUE X X expects the file to hold 16 lines of binary words, defining the fill pattern X e.g. 1111111111111111 X 1000000010000000 X 1000000010000000 X 1111111111111111 etc X X NB : pattern must still be accessible when fill is called as SetAfPat X only sets a _pointer_ to the pattern in rastport.areaptrn X X*) XVAR X index : CARDINAL; X s : string; X ok : BOOLEAN; X convok : BOOLEAN; X temp : LONGCARD; XBEGIN X ok:=TRUE; X IF debug THEN X WriteString("trying to open pattern file : "); X WriteString(name); X WriteLn; X END; X OpenInputFile(name); X IF Done THEN X (* file opened ok - read in lines of data *) X IF debug THEN X WriteString("file opened ok"); X WriteLn; X END; X index:=0; X REPEAT X ReadString(s); X IF Done THEN X (* read a line ok - convert from binary *) X IF debug THEN X WriteString("read string : "); X WriteString(s); X WriteLn; X END; X ConvertFromString(s,2,FALSE,65535,temp,convok); X IF convok THEN X (* converted ok, put it in our pattern table *) X IF debug THEN X WriteString("string converted to number : "); X WriteCard(SHORT(temp),8); X WriteLn; X END; X pattern[index]:=WORD(SHORT(temp)); X index:=index+1; X ELSE X (* didn't convert *) X ok:=FALSE; X IF debug THEN X WriteString("conversion failed"); X WriteLn; X END; X END; X ELSE X (* couldn't read string - end of file? *) X IF debug THEN X WriteString("counldn't read string - end of file?"); X WriteLn; X END; X ok:=FALSE; X END; X UNTIL (index=16) OR (NOT ok); X CloseInput; X ELSE X (* couldn't open named file *) X WriteString("couldn't open pattern file : "); X WriteString(name); X WriteLn; X ok:=FALSE; X END; X XIF ok THEN X (* everything went ok - set fill pattern *) X IF debug THEN X WriteString("everything went ok - setting fillpattern"); X WriteLn; X WriteString("pattern = "); X WriteLn; X FOR index:=0 TO 15 DO X WriteString(" "); X WriteCard(CARDINAL(pattern[index]),8); X WriteLn; X END; X END; X SetAfPat(wd^.RPort,pattern,4); X RETURN TRUE; XELSE X IF debug THEN X WriteString("not ok - getpattern exiting"); X WriteLn; X END; X RETURN FALSE; XEND; X XEND getpattern; X X(* ------------------------- main -------------------------- *) X XBEGIN X Xusepattern:=FALSE; X XIF NOT GetCL(argc,argv) THEN X (* more than 3 args *) X usage; X HALT; XEND; X XIF (argc=1) AND (argv[0][0]='?') THEN X usage; X HALT; XEND; X XIF (argc=0) OR (argc=1) THEN X (* use default colours *) X IF debug THEN X WriteString("no colour specified - using default colours"); X WriteLn; X END; X fgcol := 2; X bgcol := 0; XEND; X XIF (argc=2) OR (argc=3) THEN X (* user supplied colour choices - get them *) X IF debug THEN X WriteString("converting colour choices"); X WriteLn; X END; X X ConvertFromString(argv[0],10,FALSE,3,t,done); X IF NOT done THEN X usage; X HALT; X ELSE X fgcol:=SHORT(t); X END; X X ConvertFromString(argv[1],10,FALSE,3,t,done); X IF NOT done THEN X usage; X HALT; X ELSE X bgcol:=SHORT(t); X END; XEND; X XIF argc=1 THEN X (* user specified ONLY pattern name - get it *) X patname:=argv[0]; X usepattern:=TRUE; XEND; X XIF argc=3 THEN X (* user specified colours AND pattern name - get pattern name *) X patname:=argv[2]; X usepattern:=TRUE; XEND; X XIntuition.IntuitionBase:=OpenLibrary(Intuition.IntuitionName,0); XGraphicsBase:=OpenLibrary(GraphicsName,0); X Xibaseptr:=Intuition.IntuitionBase; Xscreenptr:=ibaseptr^.FirstScreen; Xfound:=FALSE; Xwidth:=640; (* default width *) Xheight:=256; (* default height *) X XIF debug THEN X WriteString("searching screens for workbench screen"); X WriteLn; XEND; X XREPEAT X (* scan for workbench screen and copy it's width and height *) X IF strcmp(screenptr^.Title,screenname) THEN X (* this is the workbench screen *) X width:=screenptr^.Width; X height:=screenptr^.Height; X found:=TRUE; X IF debug THEN X WriteString("found workbench screen. title : "); X titleptr:=screenptr^.Title; X WriteString(titleptr^); X WriteLn; X WriteString(" width : "); X WriteCard(width,5); X WriteString(" height : "); X WriteCard(height,5); X WriteLn; X END; X ELSE X screenptr:=screenptr^.NextScreen; X END; XUNTIL found OR (screenptr=NULL); X XIF found THEN X (* located workbench screen ok, now scan window list to see if we're X already installed X *) X IF debug THEN X WriteString("located WorkBench Screen ok"); X WriteLn; X END; X X IF debug THEN X WriteString("searching windows for existing BackDrop window"); X WriteLn; X END; X X wd:=screenptr^.FirstWindow; X found:=FALSE; X REPEAT X (* scan window list for existing window with correct title *) X IF strcmp(wd^.Title,windowname) THEN X (* found existing window, so update it instead of opening a new one *) X found:=TRUE; X WriteString("modifying existing backdrop window"); X WriteLn; X ELSE X wd:=wd^.NextWindow; X END; X UNTIL found OR (wd=NULL); X X IF NOT found THEN X (* need to open a new window *) X X WriteString("creating new backdrop window"); X WriteLn; X X titleptr:=AllocMem(10,MemReqSet{MemPublic}); X titleptr^:=windowname; X X WITH nw DO (* setup definition for our backdrop window *) X LeftEdge := 0; X TopEdge := 0; X Width := width; X Height := height; X DetailPen := BYTE(1); X BlockPen := BYTE(1); X IDCMPFlags := Intuition.IDCMPFlagSet{}; X Flags := Intuition.SmartRefresh + Intuition.WindowFlagSet{Intuition.BackDrop,Intuition.Borderless,Intuition.NoCareRefresh}; X FirstGadget := NULL; X CheckMark := NULL; X Title := titleptr; X Screen := NULL; X BitMap := NULL; X MinWidth := width; X MinHeight := height; X MaxWidth := width; X MaxHeight := height; X Type := Intuition.ScreenFlagSet{Intuition.WBenchScreen}; X END; X X wd:=OpenWindow(nw); (* open the window *) X END; X X IF wd=NULL THEN X (* window wouldn't open - probably painted shut *) X WriteString("error opening window"); X WriteLn; X ELSE X IF NOT usepattern THEN X (* no pattern specified - use default 'stipple' pattern *) X WriteString("using default fill pattern"); X WriteLn; X pat[0] := WORD(05555H); (* setup fill pattern *) X pat[1] := WORD(0AAAAH); X SetAfPat(wd^.RPort,pat,1); X ELSE X (* user specified custom pattern *) X WriteString("using custom pattern from file : "); X WriteString(patname); X WriteLn; X IF NOT getpattern(patname,wd,pat) THEN X IF debug THEN X WriteString("getpattern failed"); X WriteLn; X END; X WriteString("error in pattern definition file (or pattern file doesn't exist)"); X WriteLn; X WriteString("will use default pattern instead"); X WriteLn; X pat[0] := WORD(05555H); (* setup fill pattern *) X pat[1] := WORD(0AAAAH); X SetAfPat(wd^.RPort,pat,1); X ELSE X IF debug THEN X WriteString("getpattern ok"); X WriteLn; X END; X END; X END; X SetAPen(wd^.RPort,fgcol); X SetBPen(wd^.RPort,bgcol); (* select the 2 colours to fill with *) X IF debug THEN X WriteString("filling backdrop window"); X WriteLn; X END; X RectFill(wd^.RPort,0,0,wd^.Width,wd^.Height); (* fill our window *) X END; XELSE X IF debug THEN X WriteString("can't find workbench's screen!"); X WriteLn; X END; XEND; X XCloseLibrary(Intuition.IntuitionBase); XCloseLibrary(GraphicsBase); X XIF debug THEN X WriteString("backdrop done"); X WriteLn; XEND; X XEND backdrop. END_OF_FILE if test 11615 -ne `wc -c <'backdrop.mod'`; then echo shar: \"'backdrop.mod'\" unpacked with wrong size! fi # end of 'backdrop.mod' fi if test -f 'backdrop.uu' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'backdrop.uu'\" else echo shar: Extracting \"'backdrop.uu'\" \(14231 characters\) sed "s/^X//" >'backdrop.uu' <<'END_OF_FILE' Xbegin 666 backdrop XM```#\P`````````#``````````(```@O````W`````````/I```(+T[Y```80 XMU"(`<`9.1TYU3E;_Z"H`>`G:A#U%__XJ#E"%+47_Z$#N__@M3?_T+5;_\$YHW 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]P($]!Z/^`D<"Q[0`$8@9R`W`&3D=.=4J?+T[__$YN+2\``CT78 XM+2___$CF__PB42".+$E,WC__+U[__#Z>+UX``DYF+&___$YS2I\O3O_\3FXM& XM+P`"/1<M+__\2.;__")1((Y'^@`J+0L]/$ZY/3PG`#T\1OPDCBQ)3-X__R]>` XM__P^GB]>``).9BQO__Q.<R].__Q.;BTO``8]+P`$+2___$CF__P@7R)H`"0B& XMCBQ(3-X__R]>__P^GB]>``).9BQO__Q.<T;\)P`N'PP'`"=F!DZY```",@P'2 XM`"9F!DZY```!,@P'`"5F!DZY```!9`P'``IF"'#X3KD````.#`<`"V8(</=.E XMN0````XP!T1`4D!.N0````Y*GU4`9@@"5_C_@U=.<U,`9@0^@4YS4P!F!D;\^ XM(`!.<U,`9@1.<4YS4P!F"B`!3KD````.3G-.5@``2.=\`"(N``@D+@`,)@$HL XM`2H"2$1(1<+"Q,3&Q<C%2$'20D*%V8720]F%2$%"0D)#2$)(0]2#U(0M00`,O XM+4(`"$S?`#Y.7DYU3E8``$CG>``B+@`,)"X`"+2\``#__V(>0D."PF@..`%"X XM04A!@L(V`3($@L)(0S8!0D%(06`>0H,V`4A#0D%(03@\``_CB^.1LH)E!)*"T XM4D-1S/_R+4,`#"U!``A,WP`>3EY.=4Y6``!(Y_\`3.X`\``(2$0V!$A&O4-;` XMYS0$,#Q_\,1`9P`!#C8&QD!G``$&UD($0S_P8P``_&L``/YP#\A`",0`!,Q`= XM",8`!'0`/P,P!,#&2$`R!,+'-@1(1L;&T(,V!$A'QL=(0=)#0D-(0]$0V* XM!,;&TD-(04)#2$/1@S8$2$;&QM"#-@3&Q]*#T8(V!$A'R,="1$A$TH31@C8%V XMQL;2@]&"-@5(1L;&0D-(0]*#T8)(138%QL;2@]&"2$;,Q4A!TD9(04)&2$;1M XMADA'RL="14A%TH71@E"!T8(V'W@$>AD+`&<&4D0&0P`0%`#HND("Z*CHJ8*"R XM6P4+`&8,U(+3@=&`!$,`"F,D2D-K*$A``D``#X!#2$!*'V<$=A\'P$CN``,`= XM$$S?`/].7DYU5$]P`'(`8.IP!4ZY````!DY6``!(Y_\`3.X`\``(2$0R!`)!# XM?_!G``".2$8P!@)`?_!G``!PD$$&0#_P:P``>#(&N4%;YP)&``\(Q@`$`D0`\ XM#PC$``1(1DA$<AYV`&$B)`-R%W8`819R">.KU8)K3@1``!!K```LUH/5@F!`S XMWH?=AKR$7,G_^`/#GH6=A%O)_^YJ#-Z%W80#@TI!7<G_X$YU5(]T`'8`2.X`5 XM#``03-\`_TY>3G5P!4ZY````!GP`!H,```@`U89D"N*2XI,&0``0:^)R`#("_ XM?@ONJNZK[KE"`8:!2$("0@`/A$!(0DH?9[9P'P'"8+!.5@``2.?@`'``(BX`Q XM"&=(-#Q!X$A!,`%F"DA!,`%R``1"`0!"00Q``/]B#.&(X9F``4(!!$(`@$I`8 XM:PH$0@`0TH'10&KVZXCKF8`!0@%(0`)```^`0DA`2.X``P`(3-\`!TY>3G5.= XM=4Y6``!(Y^``("X`"..8)``"@`#___\"@O\```!F$G``<@!([@`#``A,WP`'L XM3EY.=>:*XHCBD@:".````"(`YHCFF0*!<````(""8-9.<4YQ3G$J`"/%````& XM!"H((\4`````*@\CQ0````P@+P`$*@`CQ0````@J.0````R:N0````A0A2/%_ XM````4$GY```&OD?Y````5'H+%MQ7S?_\(_P```#R````%"QX``0B?`````!.Y XMKO[:*@`CQ0```!`C^0```!````!,*CP```'@*'D```!,*44`,BQX``1P!TZN/ XM_JIP!4ZN_JIP!DZN_JI"IT*G0J<B>0```%`O"4*G*D^>_``DG<YA"BYY````6 XM#'``3G5.^0``!M!D;W,N;&EB<F%R>0!.^0``!?)"N0```&).^0``!N).^0``6 XM!LI"N0```&9.^0``!U1.5@``+PXB;@`(+'@`!$ZN_F(L7TY>3G5.5@``+PXH3 XM;@`,*@PB12`N``@L>``$3J[]V"Q?*@`M10`23EY.=4Y6```O#B`N``PB+@`(A XM+'@`!$ZN_SHL7RH`+44`$$Y>3G5.^0``!MQ.5@``0KD```!R3EY.^0``!Y!.5 XM5@``+PXH;@`(*@P@12QY````<DZN_S0L7RH`+44`#$Y>3G5.^0``!TY"N0``+ XM`'9.^0``"@I.5O_P#&X``@`690P,;@`D`!9B!'H!8`)Z`"AN``@8A2AN``A*[ XM%&<"8`1.^@'(>@`Z+@`6+RX`$"\%3KD```*T+I\J'SU%__9Z`#HN`!8O+@`0Z XM+P5.N0```K18CRU?__!";O_\*&X`#$*40F[_^CHN__JZ;@`<8A0Z+O_Z*&X`Q XM&$HT4`!G!E)N__I@XD(N__]*+@`49RHH;@`8#!0`*V8*/7P``?_\3OH`&"ANM XM`!@,%``M9@P]?``!__P=?``!__\Z+O_ZNF[__%+%1`4H;@`(&(4Z+O_\NF[_- XM^F0**&X`"$H49P)@!$[Z`/@Z+O_\*&X`&!@T4``,!`!A90H,!`!Z8@0"!`!?3 XM'43_]0PN`##_]64:#"X`.?_U8A)Z`!HN__4$10`P/47_^$[Z`"X,+@!!__5E_ XM'@PN`%K_]6(6>@`:+O_U!$4`009%``H]1?_X3OH`""AN``A"%"AN``A*%&<.A XM.B[_^+IN`!9D!'H!8`)Z`"AN``@8A2AN``A*%&=>*&X`#"H4NJ[_\&46*&X`@ XM#"H4NJ[_\&8..B[_^+IN__9B!'H!8`)Z`"AN``@8A2AN``A*%&<H>@`Z+@`6, XM*&X`#"\4+P5.N0```FA8CWH`.B[_^-J?*&X`#"B%4F[__&``_O1*+O__9PXHR XM;@`,*A1$A2AN``PHA4Y>3G5.5O_^68\O/#NCUPI.N0``!:9)^0```/@HWRC?L XM/7P``__^.B[__E-%YT5)^0```.@O-%`$+S10`"\Y```!A"\Y```!@$ZY```$7 XM5E"/.B[__N=%2?D```#H2?10`"C?*-]2;O_^#&X`$?_^9K9.7DYU3OD```>*S XM3E8``%F/>@`O!4ZY```%/DGY```!<"C?*-]9CWH!+P5.N0``!3Y)^0```7@H) XMWRC?68]Z"B\%3KD```4^2?D```&`*-\HWV$`_T)9CWH*+P5.N0``!3Y)^0``O XM`+`HWRC?68]Z9"\%3KD```4^2?D```"X*-\HWUF/*CP``"<0+P5.N0``!3Y)6 XM^0```,`HWRC?+SD```#$+SD```#`+SD```#$+SD```#`3KD```,84(])^0``R XM`,@HWRC?+SD```#,+SD```#(+SD```#,+SD```#(3KD```,84(])^0```-`H9 XMWRC?+SD```#4+SD```#0+SD```#4+SD```#03KD```,84(])^0```-@HWRC?W XM+SD```#<+SD```#8+SD```#<+SD```#83KD```,84(])^0```.`HWRC?+SD`A XM``#D+SD```#@+SD```#D+SD```#@3KD```,84(])^0```.@HWRC?+SD```#L- XM+SD```#H+SD```#L+SD```#H3KD```,84(])^0```/`HWRC?(_Q!(```````U XM>B/\.Z/7"@```)(C_$+(``````!^(_PZ`Q)O````EB/\1AQ``````((C_#A1O XMMQ<```":(_Q,OKP@````AB/\-J?%K````)XC_%H.&\H```"*(_PU!C>]````" XMHB/\=)W%K@```(XC_#-6OY4```"F0KD```"J3EY.^0``#Z).5@``+PXB+@`(W XM+'D```!V3J[_W"Q?3EY.=4Y6```O#BQY````=DZN_\HL7RH`+44`"$Y>3G5.9 XM5@``+PXL>0```'9.KO]\+%\J`"U%``A.7DYU3E8``"\.(BX`""QY````=DZN3 XM_R@L7RH`2H56Q40%'44`#$Y>3G5.5@``+PXH;@`,*@PB!20N``@L>0```'9./ XMKO_B+%\J`"U%`!).7DYU3E8``"\.+'D```!V3J[_Q"Q?*@`M10`(3EY.=4Y6T XM```O#B(N`!`D+@`,)BX`""QY````=DZN_]8L7RH`+44`%$Y>3G5.5@``+PXBP XM+@`0)"X`#"8N``@L>0```'9.KO^^+%\J`"U%`!1.7DYU3E8``"\.(BX`$"0N) XM``PF+@`(+'D```!V3J[_T"Q?*@`M10`43EY.=4Y6__PH;@`,2JX`"&8*.7S_= XM_P`&3OH`=BBN``@O#%6/+RX`"$ZY```,;EB/&A\H7TH%9PA"+``$3OH`3B\,. XM68\O+@`(0J=Z`2\%3KD```T`3^\`#"H?*%\M1?_\+PQ9CR\N``A"IWK_+P5.L XMN0``#0!/[P`,*A\H7RE%``A*K``(5\5$!1E%``1";``&3EY.=4Y6```H;@`(` XM0I0H;@`(0FP`!DY>3G5.5O_\*&X`"DJ48U0O#%F/+Q1'[@`(*@LO!7H!+P5.T XMN0``#2A/[P`,*A\H7RU%__QZ`;JN__QG'"\,68].N0``#%(J'RA?.44`!AE\' XM``$`!$[Z``I";``&0BP`!$[Z``@Y?/__``9.7DYU3E;_^BAN``Y*E&,"8`1.K XM^@"`0F[_^CHN__JZ;@`,8A0Z+O_Z)FX`"$HS4`!G!E)N__I@XB\,68\O%"9N: XM``@J"R\%>@`Z+O_Z+P5.N0``#2A/[P`,*A\H7RU%__QZ`#HN__JZKO_\9QPOS XM#%F/3KD```Q2*A\H7SE%``89?``!``1.^@`*0FP`!D(L``1.^@`(.7S__P`&( XM3EY.=4Y6__PH;@`,2I1C`F`$3OH`B"\,68\O%"9N``@J"R\%>@$O!4ZY```,4 XMV$_O``PJ'RA?+47__'H!NJ[__&<N)FX`"$(3&7P``0`$+PQ9CTZY```,4BH?N XM*%\Y10`&2FP`!F8&.7S__P`&3OH`*D)L``8O#%F/+Q1"IT*G3KD```T`3^\`< XM#"H?*%^ZK``(5,5$!1E%``1.^@`(.7S__P`&3EY.=4[Y```*!$Y6``!*N0``" XM`'9F'EF//SP`"DAY```/U$*G3KD```<&3^\`"B/?````=DY>3OD``!#B9&]SS XM+FQI8G)A<GD`3E8``$(Y```!B$Y>3G5.5O_\0F[__CHN__XH;@`.'710`/_]L XM.B[__BAN``@==%``__P:+O_]NB[__&8"8`1.^@"8&B[__;HY```!B&8*'7P`[ XM`0`43EY.=5)N__XZ+O_^NFX`$F,Z.B[__KIN``QB%#HN__XH;@`(
`+@Y< XM```!B&8.'7P``0`43EY.=4[Z``P=?``"`!1.7DYU3OH`-CHN__ZZ;@`,8RHZJ XM+O_^*&X`#A@T4`"X.0```8AF#AU\``$`%$Y>3G5.^@`*0BX`%$Y>3G5.^@`BE XM&B[__;HN__QC#$(N`!1.7DYU3OH`#!U\``(`%$Y>3G5@`/\<3OD```^<3E8`, XM`&$`_OA.7D[Y```3\$Y6``!(>0```8Y9CS\N``PH;@`(2%1(>`/M3KD```R4S XM3^\`"DZY```-4%"/2GD```&45\5$!1/%```!BDY>3G5.5O_\2KD```&.8T0M? XM>0```8[__$AY```!CDZY```-X%B/68].N0``##8J+O_\NI]G#"\N__Q.N0``= XM#!Q8CTGY```!ID?Y```!CB;<)MPFW$Y>3G5.5@``2'D```&.*&X`"$A43KD`Q XM``[Z4(]5CR\Y```!CDZY```,;EB/2A]G/"AN``@,%`";9C)(>0```8XH;@`(5 XM2%1.N0``#OI0CRAN``@,%``P90PH;@`(#!0`.6("8-8H;@`(&+P`&TIY```!+ XME%?%1`43Q0```8I.7DYU3E;__D)N__Y5CR\Y```!CDZY```,;EB/2A]G`F`$2 XM3OH`TA/\``$```&*2'D```&+80#_4EB/##D`(````8MB#`PY`!L```&+9P)@O XMW@PY`"````&+8P)@!$[Z`)0,.0!_```!BV<*##D`"````8MF/!/\`$$```&+, XM2F[__F,J2CD```&,9R)3;O_^'SP`"&$``/I4CQ\\`"!A``#P5(\?/``(80``M XMYE2/3OH`-#HN__ZZ;@`,8B@Z+O_^*&X`"!FY```!BU``4F[__DHY```!C&<,9 XM'SD```&+80``L%2/2'D```&+80#^GEB/8`#_8$[Z`(!(>0```8Y(>0```8M.[ XMN0``#OI0CPPY`"````&+8@I*>0```91F`F#8##D`(````8MC/$IY```!E&8TW XM.B[__KIN``QB%#HN__XH;@`(&;D```&+4`!2;O_^2'D```&.2'D```&+3KD`A XM``[Z4(]@NDIY```!E%?%1`43Q0```8HZ+O_^NFX`#&(,.B[__BAN``A"-%``Q XM3EY.=4Y6``!(>0```9H?+@`(3KD```WV7(].7DYU3E8``!\\``IA`/_<5(].> XM7DYU3E8``$AY```!FC\N``PH;@`(2%1.N0``#F!/[P`*2GD```&@5\5$!1/%R XM```!BDY>3G5.^0``$-Q.5@``2KD```!V9AY9CS\\``I(>0``%(1"ITZY```'+ XM!D_O``HCWP```'9".0```8Q(>0```8Y9CTZY```,-DZY```-4%"/2?D```&.C XM1_D```&F)MPFW";<2'D```&:68].N0``#+Q.N0``#5!0CTGY```!FD?Y```!A XMLB;<)MPFW$Y>3OD``!C::6X^(```;W5T/B``9&]S+FQI8G)A<GD`3E8``"\.2 XM(FX`$#`N``XR+@`,-"X`"C8N``@L>0```&).KO[.+%].7DYU3E8``"\.(FX`* XM"C`N``@L>0```&).KOZJ+%].7DYU3E8``"\.(FX`"C`N``@L>0```&).KOZD; XM+%].7DYU3E8``"AN``HJ#"AN`!`I10`(>@`Z+@`(*&X`$!E%`!U.7DYU3E;_M XM^"HY`````-JY````!%.%+47_^BAN__I"%"AN``Y"5"UY`````/_Z*&[_^@P4B XM`"!F!E*N__I@\"AN__I*%&<.*&X`#CH4NFX`#&("8`1.^@#"*&X`#CH4ROP`G XM4"AN``A"-%``0F[__BAN__H,%``B9@X=?``B__E2KO_Z3OH`"!U\`"#_^2ANI XM__I*%&<\*&[_^AH4NB[_^6<P#&X`3__^9!XH;O_Z)FX`#CH3ROP`4"9N``@X> XM+O_^1_-0`!>40`!2;O_^4J[_^F"\#&X`3__^9!HH;@`..A3*_`!0*&X`"#@N" XM__Y)]%``0C1```PN`"+_^68$4J[_^BAN__H,%``@9@92KO_Z8/`H;@`.4E1@E XM`/\H*&[_^DH49A(Z+@`,4D4H;@`.NE1E!'H!8`)Z`!U%`!).7DYU<`!.N0``C XM`1Q.5@``/SP`'4AY```>2DZY```3N%R/3KD``!.F/SP`($AY```>:DZY```3] XMN%R/3KD``!.F/SP`.4AY```>C$ZY```3N%R/3KD``!.F/SP`($AY```>R$ZY( XM```3N%R/3KD``!.F3KD``!.F/SP`0$AY```>ZDZY```3N%R/3KD``!.F/SP`R XM,TAY```?+$ZY```3N%R/3KD``!.F3KD``!.F3EY.=7``3KD```$<3E8``#HN+ XM``Q+O'__4D4(!0``9P)214C%#(4``'__8P1!O/__T(5.N0```1R?Q2AN``@M; XM3P`()D]311;<4<W__%6/*&X`#C\\`%!(5#\N``PH;@`(2%1.N0``#^Y/[P`,? XM#!\``68.'7P``0`23EY.=4[Z``I"+@`23EY.=7`!3KD````&(#P```"J3KD`) XM``$<3E;_5BAN`!)'[O^P>A,FW%'-__P=?``!_UL_/`!.2&[_L$ZY```0\ER/@ XM2CD```&*9P)@!$[Z`)9";O^N/SP`4$AN_UQ.N0``$@)<CTHY```!BF=8/SP`` XM4$AN_UP_/``"0B<O/```__](;O]62&[_6DZY```'G$_O`!9*+O]:9R0J+O]61 XM."[_KDFN``S81"AN``@YA4``.B[_KE)%/47_KD[Z``9"+O];3OH`!D(N_UL,E XM;@`0_ZYG"DHN_UMG!&``_WQ.N0``$3).^@`N/SP`'$AY```?8DZY```3N%R/* XM/SP`3DAN_[!.N0``$[A<CTZY```3ID(N_UM*+O];9S`H>0```>XO+``R/RX`H XM#"AN``A(5#\\``1.N0``%/9/[P`,'7P``0`63EY.=4[Z``I"+@`63EY.=7`!W XM3KD````&3OD``!/J3E8``$(Y```#756/2'D```(</SP``DAY```"'DZY```5- XM&D_O``I*'V8.3KD``!92<`!.N0````8,>0`!```"'&88##D`/P```AYF#DZYL XM```64G``3KD````&2GD```(<9PH,>0`!```"'&8.,_P``@```V)">0```V0,3 XM>0`"```"'&<*#'D``P```AQF`F`$3OH`HC\\`$Y(>0```AX_/``*0B=Z`R\%O XM2'D```-F2'D```-J3KD```><3^\`%DHY```#:F823KD``!92<`!.N0````9.X XM^@`.*CD```-F,\4```-B/SP`3DAY```";C\\``I")WH#+P5(>0```V9(>0``U XM`VI.N0``!YQ/[P`62CD```-J9A).N0``%E)P`$ZY````!D[Z``XJ.0```V8S4 XMQ0```V0,>0`!```"'&8<2?D```(>1_D```,.>A,FW%'-__P3_``!```#70QYB XM``,```(<9AQ)^0```KY'^0```PYZ$R;<4<W__!/\``$```-=68\_/``02'D`" XM`!^`0J=.N0``!P9/[P`*(]\```!R68\_/``/2'D``!^20J=.N0``!P9/[P`*! XM(]\```!B(_D```!R```#7BAY```#7B/L`#P```(20CD```(6,_P"@````A@S% XM_`$````"&E6/*'D```(2+RP`%C\\``](>0``'Z1.N0``%OY/[P`*2A]G*"AYM XM```"$C/L``P```(8*'D```(2,^P`#@```AH3_``!```"%D[Z``XH>0```A(CM XMU````A)*.0```A9F"DJY```"$F<"8)9*.0```A9G`F`$3OH"["AY```"$B/L+ XM``0```'N0CD```(658\H>0```>XO+``@/SP`!TAY```?MDZY```6_D_O``I*Z XM'V<D$_P``0```A8_/``A2'D``!_`3KD``!.X7(].N0``$Z9.^@`.*'D```'NQ XM(]0```'N2CD```(69@I*N0```>YG`F":2CD```(69@)@!$[Z`,X_/``;2'D`: XM`!_D3KD``!.X7(].N0``$Z99CWH*+P5Z`2\%3KD```<L4(\CWP```VPH>0``Z XM`VQ'^0``'[9Z"!C;5\W__$GY```!OD)40FP``CEY```"&``$.7D```(:``89< XM?``!``@9?``!``E"K``**7P``@D```Y"K``20JP`%BEY```#;``:0JP`'D*L# XM`"(Y>0```A@`)CEY```"&@`H.7D```(8`"HY>0```AH`+#E\``$`+EF/2'D`' XM``&^3KD```=F6(\CWP```>Y*N0```>YF'#\\`!-(>0``(`).N0``$[A<CTZYT XM```3ID[Z`7!*.0```UUF3C\\`!E(>0``(!A.N0``$[A<CTZY```3IC/\554`L XM``'R,_RJJ@```?0H>0```>XO+``R/SP`#TAY```!\C\\``%.N0``%/9/[P`,= XM3OH`OC\\`"!(>0``(#1.N0``$[A<CS\\`$Y(>0```PY.N0``$[A<CTZY```3E XMIE6/2'D```,.+SD```'N/SP`#TAY```!\DZY```7BD_O``Y*'V8"8`1.^@!H* XM/SP`/TAY```@5DZY```3N%R/3KD``!.F/SP`'TAY```@F$ZY```3N%R/3KD`% XM`!.F,_Q550```?(S_*JJ```!]"AY```![B\L`#(_/``/2'D```'R/SP``4ZY; XM```4]D_O``Q.^@`"*'D```'N+RP`,C\Y```#8DZY```4NER/*'D```'N+RP`# XM,C\Y```#9$ZY```4V%R/*'D```'N+RP`,D)G0F<H>0```>X_+``(*'D```'NQ XM/RP`"DZY```4D$_O``Q.^@`"+SD```!R3KD```;N6(\O.0```&).N0``!NY8- XMCTY>3G4`````0F%C:V1R;W`@=C$N,B!B>2!*($1A=FES(#`T+SDQ``!5<V%GT XM92!I<R`Z(&)A8VMD<F]P(%MF9R!B9UT@6W!A=%T`("`@("`@9F<@86YD(&)G5 XM('-P96-I9GD@=&AE(&-O;&]U<G,@=&\@=7-E(&9O<B!T:&4@<&%T=&5R;@``Q XM("`@("`@:68@;VUI='1E9"`P(&%N9"`R(&%R92!U<V5D`"`@("`@('!A="!I1 XM<R!T:&4@;F%M92!O9B!T:&4@9FEL92!C;VYT86EN:6YG('1H92!B86-K9')O, XM<"!P871T97)N`"`@("`@(&EF(&]M:71T960@82!S:6YG;&4@<&EX96P@8VAEH XM8VME<F)O87)D(&ES('5S960``&-O=6QD;B=T(&]P96X@<&%T=&5R;B!F:6QE* XM(#H@`&EN='5I=&EO;BYL:6)R87)Y`&=R87!H:6-S+FQI8G)A<GD``%=O<FMBY XM96YC:"!38W)E96X``$)A8VM$<F]P``!M;V1I9GEI;F<@97AI<W1I;F<@8F%C[ XM:V1R;W`@=VEN9&]W``!C<F5A=&EN9R!N97<@8F%C:V1R;W`@=VEN9&]W``!E2 XM<G)O<B!O<&5N:6YG('=I;F1O=P``=7-I;F<@9&5F875L="!F:6QL('!A='1E] XM<FX``'5S:6YG(&-U<W1O;2!P871T97)N(&9R;VT@9FEL92`Z(`!E<G)O<B!I@ XM;B!P871T97)N(&1E9FEN:71I;VX@9FEL92`H;W(@<&%T=&5R;B!F:6QE(&1O/ XM97-N)W0@97AI<W0I``!W:6QL('5S92!D969A=6QT('!A='1E<FX@:6YS=&5A# XM9`````````/L````IP`````````"```![@```?H```(&```"%````B(```(N8 XM```"8@``!%(```4````&,@``!D8```9P```&N@``!LP```;8```&W@``!NH`] XM``=0```'8@``!XP```>8```'V```!_(```E@```)H@``"=H```H&```*%@``Q XM"BP```I"```*7```"G(```J,```*M```"MX```L(```+,@``"UP```N&```,T XM&```#78```V<```-O```#A8```XT```.K```#LX```\@```/2@``#W8```^># XM```/M@``#[X```_0```0W@``$.X``!$.```1&```$4X``!%8```1:@``$9@`1 XM`!&H```1R@``$A0``!,"```36@``$YP``!/.```3[```%`0``!0,```4*@``! XM%#```!12```46```%'0``!96```69```%FH``!9R```6?```%H(``!:*```6L XME```%IH``!:B```6K```%K(``!:Z```6P```%LH``!;0```6V```%N(``!;H6 XM```6\```%O8``!<"```7+@``%UX``!>&```7D@``%[H``!?<```8"```&%H`! XM`!AH```8;@``&'X``!B&```8K@``&-```!C6```8^```&08``!D.```9*```M XM&3```!F0```9H@``&:H``!G@```9\@``&?H``!IB```::@``&H```!J(```:= XMU@``&MP``!MB```;:```&X(``!N(```;D```&\H``!O0```;V```&^@``!O\4 XM```<A```')X``!RD```<K```',(``!S(```<T```'/X``!T0```=%@``'2@`/ XM`!TP```=3@``'68``!UL```==```'7X``!V$```=C```';H``!W8```=\```3 XM'AH``!XN```>/````/D````!````G````-@```#T```!#```!?P```8$```&> XM#```!A@```8>```&)```!BP```8X```&2@``!F````9F```&:@``!G8```:<8 XM```&L```!M(```;D```'6@``!W8```>2```)J```"<````G.```)U```">@`. XM``H<```*,@``"D@```IB```*>```"I(```J<```*H@``"J@```JN```*O```` XM"L8```K,```*T@``"M@```KF```*\```"O8```K\```+`@``"Q````L:```+L XM(```"R8```LL```+.@``"T0```M*```+4```"U8```MD```+;@``"W0```MZ9 XM```+@```"XX```N<```+I@``"[````NZ```+Q```"\X```O8```+X@``"^P`K XM``OV```,````#`H```P0```,*```##X```Q:```,>@``#*@```S$```,[```E XM#10```T\```/J```#\@```_F```0*```$%X``!"8```0^```$2```!$J```1` XM.```$4```!%(```1<@``$7@``!&,```1H@``$;X``!'P```1^@``$@X``!(HS XM```2+@``$CP``!)&```24@``$F(``!)L```2=@``$H(``!+"```2S@``$M8`T XM`!+B```2]@``$OP``!,,```3%```$R```!,H```30@``$TX``!-4```39```2 XM$VX``!.2```3O@``$]@``!/B```3]@``%!8``!0<```4(@``%#@``!0^```4B XM2@``%&```!1F```4K```%,H``!3H```5(```%28``!4^```7P@``%^0``!B67 XM```8X```&.@``!CR```9%@``&2```!DV```90```&4H``!E0```96```&6(`* XM`!ET```9A```&8H``!F:```9M```&;H``!G$```9U```&=H``!GJ```:!```^ XM&@H``!H2```:&@``&B```!HP```:.```&D```!I&```:5@``&G0``!J2```:8 XMF```&IP``!JB```:J@``&K```!JX```:P```&L@``!KJ```:\@``&O@``!L`C XM```;"```&Q(``!L8```;'@``&R8``!LP```;/@``&T8``!M,```;5```&W@`K XM`!N:```;H```&Z8``!NN```;N```&_```!OV```<"@``'!8``!P>```<1@``= XM'%8``!Q>```<9@``'&X``!Q^```<C```')(``!RV```<V```'.```!SF```<( XM]```'2(``!TX```=/@``'4@``!V4```=G```':(``!VP```=R```'=(``!W@/ XM```=Z@``'?@``!X&```>$```'B@``!XV`````````_(```/K````W````_(`\ X+``/J`````````_(&H X`` Xend Xsize 10136 END_OF_FILE if test 14231 -ne `wc -c <'backdrop.uu'`; then echo shar: \"'backdrop.uu'\" unpacked with wrong size! fi # end of 'backdrop.uu' fi if test -f 'block.pattern' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'block.pattern'\" else echo shar: Extracting \"'block.pattern'\" \(272 characters\) sed "s/^X//" >'block.pattern' <<'END_OF_FILE' X1111111111111111 X1111111111111111 X1100000011000000 X1100000011000000 X1100000011000000 X1100000011000000 X1100000011000000 X1100000011000000 X1111111111111111 X1111111111111111 X1100000011000000 X1100000011000000 X1100000011000000 X1100000011000000 X1100000011000000 X1100000011000000 END_OF_FILE if test 272 -ne `wc -c <'block.pattern'`; then echo shar: \"'block.pattern'\" unpacked with wrong size! fi # end of 'block.pattern' fi if test -f 'hatch.pattern' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'hatch.pattern'\" else echo shar: Extracting \"'hatch.pattern'\" \(272 characters\) sed "s/^X//" >'hatch.pattern' <<'END_OF_FILE' X1000100010001000 X0001000100010001 X0010001000100010 X0100010001000100 X1000100010001000 X0001000100010001 X0010001000100010 X0100010001000100 X1000100010001000 X0001000100010001 X0010001000100010 X0100010001000100 X1000100010001000 X0001000100010001 X0010001000100010 X0100010001000100 END_OF_FILE if test 272 -ne `wc -c <'hatch.pattern'`; then echo shar: \"'hatch.pattern'\" unpacked with wrong size! fi # end of 'hatch.pattern' fi if test -f 'startup-sequence.example' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'startup-sequence.example'\" else echo shar: Extracting \"'startup-sequence.example'\" \(361 characters\) sed "s/^X//" >'startup-sequence.example' <<'END_OF_FILE' X; this is the fragment of my own startup sequence X; I use with WB and BackDrop X Xrun wb102 ; launch wb to force Workbench into window X XLoadWB delay X Xbackdrop 0 2 s:hatch.pattern ; load my own fave pattern X Xwsize -450 -100 Workbench ; size WorkBench down Xwmove 442 4 Workbench ; shunt workbench into one corner of the screen X END_OF_FILE if test 361 -ne `wc -c <'startup-sequence.example'`; then echo shar: \"'startup-sequence.example'\" unpacked with wrong size! fi # end of 'startup-sequence.example' fi if test -f 'wb102.doc' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'wb102.doc'\" else echo shar: Extracting \"'wb102.doc'\" \(2576 characters\) sed "s/^X//" >'wb102.doc' <<'END_OF_FILE' XWB - A mindless WorkBench Hack X------------------------------ XBy J Davis 10/03/90 X Xversion 1.02 - 07/07/90 X XThose who've had a sneak preview of WorkBench 2.0 will have noticed that in X2.0 WorkBench is no longer a backdrop window, but a normal sizable, Xdraggable window. X XAt first you may wonder if this is any real use ... but it can be if you X( like me ) run Jrcomm on workbench. The trouble is both WB and Jrcomm Xopen backdrop windows ... meaning that you can't depth arrange them. XHence, once Jrcomm is on WB, you cant get at the ( main ) WB window to Xopen disks ( or access MyMenu ... the main thing that annoyed me ). X XThis little machine code hack cures that, and gives you a 1.4 style Xworkbench to boot! X XWhat it does and how it does it X------------------------------- X XWB installs some new code in Intuition OpenWindow vector. As each window Xopens it checks the windows Flags field to see if it has the 'workbench' Xbit set. This is used to signify a window belonging to workbench. X XIf it is a WB window, then it clears the Backdrop and Borderless bits, and Xsets the bits to give the window size, drag and depth gadgets. It then Xallows the window open ( by calling the original OpenWindow code ) and Xremoves itself. X XHow to use it X------------- X XIn your startup-sequence, just before the LOADWB line, put in X X RUN WB X XYou need to run it, so as workbench can load. Don't worry, as soon as WB Xhas opened the background task will quit. X XThe soure code X-------------- X XIncluded is the full assembler source ( I assembled it using HiSoft's Xbrilliant devpac but most other assemblers should be happy with it ). X XThe code is easily modifiable to be a general window intercept package ... Xpossibilities include forcing WB windows to open on the front screen, Xforcing packages to NOT open backdrop windows etc. X XNote that the current slightly weird way the code works ( set functions to Xone block of code, then waits for a signal back from it ) is simply so as Xto allow the patch to be removed. If you want a permanent patch you Xshould allocmem some space and copy the patch into it, before doing a Xsetfunction and quitting ( natuarally the patch code will have to be Xposition independent ! ). X XVersion 1.02 Changes X-------------------- X XThis is just a maintenance release. In v1.01 I commited the cardinal sin Xof writing self modifying code ( which may not work properly on 030s 040s X). Plus it still had a lot of unecessary debugging code in it. All of Xthat has been cleaned up in this release. END_OF_FILE if test 2576 -ne `wc -c <'wb102.doc'`; then echo shar: \"'wb102.doc'\" unpacked with wrong size! fi # end of 'wb102.doc' fi if test -f 'wb102.s' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'wb102.s'\" else echo shar: Extracting \"'wb102.s'\" \(6633 characters\) sed "s/^X//" >'wb102.s' <<'END_OF_FILE' X; program to intercept all openwindow calls X; waits until it's WB and forces WB to open sizable/draggable/depthable X; then restores normal openwindow and quit X; X; v1.0 initial version X; X; v1.01 90/04/01 fixed bug causing crash if $0<>#0 X; ( guess who forgot to put #0 instead of $0 for X; the lib version :-) X; X; v1.02 90/07/07 cleaned up code to avoid illegal ( on 030 ) X; self-modifying code X; ( oops .. guilty as charged your honour! :-) X; also cleaned up code to reduce chances of X; crashes whilst code de-installs itself ( was X; very rough and ready, is now just rough :-) X X;========================================================== X Xopenlibrary equ -$228 ; misc lib call offsets we need Xsetfunction equ -$1a4 ; I know it's slack but it's quick :-) Xcloselibrary equ -$19e X Xopenwind equ -$cc X Xoutput equ -$3c Xdelay equ -$c6 Xwrite equ -$30 X Xoffsetflags equ 14 ; offset of flags in newwindow struct X Xdebug equ 0 ; whether we want extra debug info X X;==================================================================== X Xstart: move.l $4,a6 X move.l #intuiname,a1 X move.l #$0,d0 X jsr openlibrary(A6) ; open intuition X X move.l d0,intuibase ; save lib in ibase X X move.l $4,a6 X move.l #dosname,a1 X move.l #$0,d0 X move.l $4,a6 X jsr openlibrary(a6) ; open dos X X move.l d0,dosbase ; save lib in dosbase X X move.l $4,a6 X move.l intuibase,a1 X move.w #openwind,a0 X move.l #ouropenwind,d0 X jsr setfunction(a6) ; replace intuitions open window X X move.l d0,oldopenwind ; save old vector X X IFNE debug X move.l dosbase,a6 X jsr output(a6) ; get handle on stdout X X move.l d0,outhandle ; save the output handle X X move.l dosbase,a6 X move.l outhandle,d1 X move.l #startstr,d2 X move.l #es-startstr,d3 X jsr write(a6) ; print startup message X ENDC X X ; now wait for WorkBench to open X Xwloop: cmpi.b #$1,flag ; has it happened yet ? X beq done X X move.l dosbase,a6 X move.l #50,d1 X jsr delay(a6) ; wait 1 sec X X bra wloop ; loop waiting for patch to signal us X Xdone: ; patch has done it's thing, now quit X X IFNE debug X move.l dosbase,a6 X move.l outhandle,d1 X move.l #quitstr,d2 X move.l #eq-quitstr,d3 X jsr write(a6) ; print quit message X ENDC X X move.l $4,a6 X move.l intuibase,a1 X jsr closelibrary(a6) ; close intuition X X move.l $4,a6 X move.l dosbase,a1 X jsr closelibrary(a6) ; close dos X X rts ; all done, quit X X;================================================================ X Xouropenwind: ; this replaces the normal openwindow call X ; we snoop the newwind to see if X ; flags INCL WorkBenchWind X X ; on entry A0 = newwindowptr X ; on return D0 = windowptr X X IFNE debug X movem.l a0-a6/d0-d7,-(a7) ; save everything X X move.l dosbase,a6 X move.l outhandle,d1 X move.l #windstr,d2 X move.l #ew-windstr,d3 X jsr write(a6) ; print up a status message X X movem.l (a7)+,a0-a6/d0-d7 ; get all the regs back so we X ; see where a0 points X ENDC X X movem.l a0-a6/d0-d7,-(a7) ; save all regs as we alter them X X move.l offsetflags(a0),d0 ; get flags in d0 X X IFNE debug X bsr printflags ; print them out X ENDC X X btst.l #25,d0 ; is WbencWindow set X X beq carryon ; not set .. do nothing X X bset.l #0,d0 ; set windowsizing X bset.l #1,d0 ; set window drag X bset.l #2,d0 ; set window depth X X bclr.l #8,d0 ; clear backdrop X X bclr.l #11,d0 ; clear borderless X X move.l d0,offsetflags(a0) ; copy in modified flags X X IFNE debug X bsr printflags ; print out changed flags X X move.l dosbase,a6 X move.l outhandle,d1 X move.l #wbwindstr,d2 X move.l #ewb-wbwindstr,d3 X jsr write(a6) ; print status message X ENDC X X ; now set openwindow vector back to it's original value X ; note this is potentially risky, as if another program X ; has setfunctioned openwindow since we installed X ; we will effectively remove it AS WELL as ourselves!! X X ; I presume setfunction does a Forbid for us while removing X X move.l $4,a6 X move.l intuibase,a1 X move.w #openwind,a0 X move.l oldopenwind,d0 X jsr setfunction(a6) ; put back orig openwindow X X ; now signal back that it's ok to remove us now X X move.b #$1,flag ; set terminate flag X Xcarryon: ; call old openwindow code X ; note this is changed from the last version X ; which used self-modifying code which is of course X ; very poor style! X X movem.l (a7)+,d0-d7/a0-a6 ; get all the regs back X X ; openwindow only takes a newwindowptr in A0 X ; and returns windowptr in D0, so we used unused X ; A1 reg as pointer to code to jump to X X ; CBM actually recommend you copy back the original X ; vector and jump thru that via jsr -blarg(a6) X ; this is a bit quicker, if slightly illegal X X move.l a1,-(a7) ; save a1 as we're going to use it X move.l oldopenwind,a1 ; get address of old openwindow X jsr (a1) ; call old code X move.l (a7)+,a1 ; get back original a1 X X rts X X;=================================================================== X IFNE debug Xprintflags: ; print out WindowFlags in D0 for debugging X movem.l a0-a6/d0-d7,-(a7) ; save all regs X move.l #31,d1 ; print out all 32 bits X Xploop: btst d1,d0 ; see what bit is set to X movem.l d0-d7/a0-a6,-(a7) ; save regs X beq iszero X X move.l dosbase,a6 X move.l outhandle,d1 X move.l #onestr,d2 X move.l #1,d3 X jsr write(a6) ; print "1" X bra next X Xiszero: move.l dosbase,a6 X move.l outhandle,d1 X move.l #zerostr,d2 X move.l #1,d3 X jsr write(a6) ; print "0" X Xnext: movem.l (a7)+,d0-d7/a0-a6 ; restore regs X X dbf d1,ploop ; do it for all 32 bits X X move.l dosbase,a6 X move.l outhandle,d1 X move.l #lfstr,d2 X move.l #1,d3 X jsr write(a6) ; print a LF X X movem.l (a7)+,d0-d7/a0-a6 ; restore all regs X rts X ENDC X X;============================================================= X; data and var storage X Xflag: dc.b 0 X ; use this to signal main program from patch X ; when we want to terminate X Xonestr: dc.b "1" Xzerostr: dc.b "0" Xlfstr: dc.b 10 X Xstartstr: dc.b "installed .. waiting for window to open",10 Xes: dc.b 0 X Xwindstr: dc.b "window opened",10 Xew: dc.b 0 X Xwbwindstr: dc.b "WorkBench window opened!! ",10 Xewb: dc.b 0 X Xquitstr: dc.b "removing and terminating",10 Xeq: dc.b 0 X Xintuiname: dc.b "intuition.library",0 X Xdosname: dc.b "dos.library",0 X X cnop 0,4 ; align var storage X Xoldopenwind: dc.l 0 ; old openwindow address is saved here Xouthandle: dc.l 0 ; store handle to stdout here Xdosbase: dc.l 0 ; store dosbase ptr here Xintuibase: dc.l 0 ; store ibase ptr here X X end END_OF_FILE if test 6633 -ne `wc -c <'wb102.s'`; then echo shar: \"'wb102.s'\" unpacked with wrong size! fi # end of 'wb102.s' fi if test -f 'wb102.uu' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'wb102.uu'\" else echo shar: Extracting \"'wb102.uu'\" \(768 characters\) sed "s/^X//" >'wb102.uu' <<'END_OF_FILE' Xbegin 666 wb102 XM```#\P`````````!``````````````!G```#Z0```&<L>0````0B?````6X@' XM/`````!.KOW8(\````&8+'D````$(GP```&`(#P`````+'D````$3J[]V"/`* XM```!E"QY````!")Y```!F#!\_S0@/````*!.KOY<(\````&,##D``0```/QG\ XM```6+'D```&4(CP````R3J[_.F``_^(L>0````0B>0```9A.KOYB+'D````$X XM(GD```&43J[^8DYU2.?__B`H``X(```99P``/`C````(P``!",```@B```@(( XM@``+(4``#BQY````!")Y```!F#!\_S0@.0```8Q.KOY<$_P``0```/Q,WW__G XM+PDB>0```8Q.D2)?3G4`,3`*:6YS=&%L;&5D("XN('=A:71I;F<@9F]R('=ID XM;F1O=R!T;R!O<&5N"@!W:6YD;W<@;W!E;F5D"@!7;W)K0F5N8V@@=VEN9&]W/ XM(&]P96YE9"$A(`H`<F5M;W9I;F<@86YD('1E<FUI;F%T:6YG"@!I;G1U:71I3 XM;VXN;&EB<F%R>0!D;W,N;&EB<F%R>0`````````````````````````#[```8 XM``\`````````"````!@````D````.@```$8```!0````6@```&(```!L````+ X=A@```)8```#0````V@```.8```#R`````````_)0C X`` Xend Xsize 524 END_OF_FILE if test 768 -ne `wc -c <'wb102.uu'`; then echo shar: \"'wb102.uu'\" unpacked with wrong size! fi # end of 'wb102.uu' fi if test -f 'wmove.uu' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'wmove.uu'\" else echo shar: Extracting \"'wmove.uu'\" \(14508 characters\) sed "s/^X//" >'wmove.uu' <<'END_OF_FILE' Xbegin 666 wmove XM```#\P`````````"``````````$```CG```!D0```^D```CG2.=^_DOO`#0D2 XM2"0`2?D`````+'@`!"E.`$`I3P!,0JP`2)/)3J[^VB9`*6L`F``X2JL`K&<`) XM`'`@#9"M``0&@````(`I0``$80`!>B!K`*S1R-'((F@`$-/)T\D@`G(`$ADI0 XM20!4T(%2@$)G4H`"0/_^G\!5@$)W"``@`E.`U($?L@``(`!3@E'(__8?O``@( XM(`!3@A^Q(``@`%'*__@B3R\)8```;"EK`#H`!`:L````@``$80`!#F$``/@I& XM0`!(+P`D0"`J`"1G$BQL!!@@0"(H```I00`X3J[_@B(J`"!G&B0\```#[4ZNX XM_^(I0`!09PKEB"!`)V@`"`"D(&P`2"\(2&P``"!H`"0I:``$`%1'^0``!"QR) XM`"`\````AF`")L%1R/_\3KH2H'``8`0@+P`$+P`@+``L9P0@0$Z03KH'UBQXY XM``0B;`083J[^8DJL!"!G"")L!"!.KOYB2JP$)&<((FP$)$ZN_F)*K`!89P@B? XM;`!83J[^8DJL`$AG)"(L`#QG!$ZN_]PB+`!09P1.KO_<+'@`!$ZN_WPB;`!(* XM3J[^AB`?+FP`3$S??WY.=7!D8(!!ZP!<3J[^@$'K`%Q.KOZ,3G5#[`!<<`!.@ XMKOW8*4`$&&?:3G4``+_L``1E`!]&2&P`:$ZZ"!983TAX``I.N@1,6$].=4Y5= XM``"_[``$90`?)"\M``A(;`"0+RT`#$ZZ"9A/[P`,4X!G`F&\3EU.=4Y5__Q(' XMYP`"O^P`!&4`'O9*K0`(9SX@;0`(2A!G-B!L!!PK:``\__Q*K?_\9S(@;?_\* XM2J@`%F<2+RT`""\H`!9.N@RZ4$]*@&<6(&W__"M0__Q@U")L!!P@:0`X*TC_9 XM_$JM__QF("QX``1.KO]V+RT`"$AL`)1.N@=D4$](>``*3KH#FEA/("W__$S?4 XM0`!.74YU3E7__$CG``*_[``$90`>9$JM``AG/B!M``A*$&<V(&T`#"MH``3_R XM_$JM__QG,B!M__Q*J``@9Q(O+0`(+R@`($ZZ#"A03TJ`9Q8@;?_\*U#__) XM(FP$'"!I`#0K2/_\2JW__&8J+'@`!$ZN_W8@;0`,+R@`%B\M``A(;`"L3KH&, XMRD_O``Q(>``*3KH"_EA/+'@`!$ZN_W8@+?_\3-]``$Y=3G5.5?_H2.<X(K_L% XM``1E`!W`D<@K2/_X*TC__"(M``@,@0````-M"`R!````!6\$80#^4B!M``PO1 XM*``$2&W_]&$`_F!03R!M``PO*``(2&W_\&$`_DY03R(M``@,@0````-O&"!M5 XM``Q*J``,9PX@:``,$!!*`&<$*TC__`R!````!&\8(&T`#$JH`!!G#B!H`!`0F XM$$H`9P0K2/_X0^P`U'``+'@`!$ZN_=@I0`0<2JP$'&<``4`L>``$3J[_?"\M= XM__AA`/X(6$\O`"\M__PK0/_H80#^BE!/*T#_["QX``1.KO]V(&W_[#`H``1(P XMP$2`)"W_]+2`;`0K0/_T,"@`!DC`1(`D+?_PM(!L!"M`__`P*``$2,`B+?_T8 XMTH`T*``(2,+2@B)M_^@V*0`,2,.R@V\(EH*6@"M#__0P*``&2,`B+?_PTH`TE XM*``*2,+2@C8I``Y(P[*#;PB6@I:`*T/_\"1H`"XO*@`6+R@`($AL`.9.N@4V\ XM3^\`#"!M_^PP*``$2,`R*``&2,$O`2\`2&P!!$ZZ!19/[P`,2JW_]&8&2JW_@ XM\&=$(&W_[#`H``1(P"(M__30@30H``9(PB8M__#4@R\#+P$O`B\`2&P!($ZZN XM!-I/[P`4(&W_["`M__0B+?_P+&P$'$ZN_U@B;`0<+'@`!$ZN_F),WT0<3EU.G XM=4CG,#(L>0``!!P@;P`8(F\`'"1O`"`F;P`D("\`*"(O`"PD+P`P)B\`-$ZN' XM_J1,WTP,3G5.5?_\2.<@`'``*4``&$JM``AK)"0M``BTK`.$;!HB`N>!0>P%8 XM!")(T\%*D6<*(@+G@='!(`A@"'`)*4`"S'``3-\`!$Y=3G4`````````````Y XM``````````````````!*K`0<9A)#[`*X<``L>``$3J[]V"E`!!PI;`!4`FQ(( XM>``H2'@`^G``+P`O`$AL`J0O`$AL`HHO`$ZZ_S)/[P`@2'@`%$ZZ&S)83TYU* XM````````````````3E7_]$CG`"!%[`+LM/P``&<V""H``@`;9BH(*@`!`!MGE XM(B`J``20J@`0*T#_^$J`9Q(O`"\J`!`O*@`<3KH)BD_O``PD4F#$+RT`"$ZZ7 XM&M)83TS?!`!.74YU``!G/B!M``AP84Y5```O+0`(80983TY=3G5.5?_L2.<#^ XM("XM``A*AVX&<`!@``#$#(<````(;`)^""`'(`=6@.2`Y8`N`$'L`WPD4"M(9 XM__BT_```9TXB*@`$LH=M/K*'9A(@4B)M__@BB)^L`X`@"F```(`@*@`$D(<,L XM@`````AM&B!*($K1QR"2(4``!")M__@BB)^L`X`@"F!6*TK_^"128*P@!R(L3 XM!"@@!]"!4X!.NAD8(BP$*$ZZ&>Q0@"P`(`8@!E:`Y(#E@"P`+P9.N@"B6$\K[ XM0/_P2H!G%"\&+P!.N@,B4$\O!V$`_S!83V`"<`!,WP3`3EU.=2!M``A*$&<V, XM(&T`#$Y5```B+0`(#($````P;0P,@0```#EN!'`!8`)P`$Y=3G4``$Y5__8OY XM+0`(3KK]NEA/*T#_]DJ`9@1P_V`J+RT`$"\M``P@;?_V+R@`!$ZZ&OQ/[P`,! XM*T#_^DJL`!AG!'#_8`0@+?_Z3EU.=4Y5__@@+0`(!H`````,+T```"`O``!R5 XM`"QX``1.KO\Z*T#__$JM__QF!'``8#0@+0`(!H`````,(&W__"%```@O"$ALF XM!"QA``$(4$]*K`-P9@8I;?_\`W`@;?_\T/P`#"`(3EU.=4Y5__PO+0`(89!83 XM3RM`__Q*@&8&,'S__R`(3EU.=4Y5__A(YP$@80``@'``*4``$"E```@I0``,% XM*4`#?"E``X`I0`-T*4`#<"E``WA*K`-H9TP@+`0H(BP#:-*`4X$@`2(L!"A.( XMNA>,(BP$*$ZZ&&!0@"X`(`<@!U:`Y(#E@"X`+P=A`/\66$\D0+3\``!F!'#_P XM8`PO!R\*3KH!>%!/<`!,WP2`3EU.=4Y5__@K;`0L__Q*K?_\9R0@;?_\*U#_C XM^")M__P@;?_\("@`""QX``1.KO\N*VW_^/_\8-:1R"E(!#`I2`0L3EU.=4Y5; XM``!(YP`@(FT`""!I``0B;0`,(T@`!)'((H@D;0`(2I)F`B2)2JH`!&<&(&H`Y XM!""))4D`!$S?!`!.74YU```K2/_X*TC__"(M``@,@0````-M"`R!````!6\$U XM80!P84Y5``!2K`0X4ZP#&B`L`QI*@&L4(&P#$E*L`Q(@+0`($(!R`!(08!@@B XM+0`(`H````#_2&P##B\`3KH&>E!/(@!.74YU3E4``$*L!#A(;0`,+RT`"$AZ5 XM_ZI.NA!43^\`#$AL`PY(>/__3KH&2E!/("P$.$Y=3G4``$Y5__@O+0`(3KK[0 XM2EA/*T#__$J`9@1P_V`J+RT`$"\M``P@;?_\+R@`!$ZZ%^Q/[P`,*T#_^$JLH XM`!AG!'#_8`0@+?_X3EU.=0```````G!A3E7__"`M``PO`"\M``@K0/_\8090" XM3TY=3G5.5?_H2.<A,"XM``Q*AVX&</]@``#R#(<````(;`)^""`'(`=6@.2`+ XMY8`N`"!M``@K2/_TT<??K`.`0^P#?"11*TC_\"M)__BT_```9P``HB!*("H`1 XM!"!*T<`K2/_L)"W_\+7"8Q8B;?_T(HHC1P`$)FW_^":)<`!@``",M<)F'B)2M XM)FW_]":)("H`!"(`TH<G00`$(FW_^"*+<`!@:")M__2SR&0(GZP#@'#_8%BSF XMR&8N2I)G#B(2M(%C")^L`X!P_V!"WZH`!$J29Q"TDF8,($(@*``$T:H`!"209 XM<`!@)BM*__@K;?_L_^@D4F``_UH@;?_X(*W_])'((FW_]"*((T<`!"`(3-\,1 XMA$Y=3G5.5?_H2.<P`"EM``@$/$'M`!!"K?_\*TC_["!M``Q*$&<``29P`!`00 XM4JT`#$'L`5W1P!(0*T#_^`@!``-FW`R`````)68``,@@;0`,#!``)68R<``@: XM;`0\$!!2K`0\*T#_^$'L`5W1[?_X$!`(```#9N`,K0```"7_^&>>("W__&``? XM`,H@;0`,#!``*F<,*VW_[/_H6*W_[&`*D\E2K0`,*TG_Z$*M__0O+?_H2&W_[ XM]$AZ`*(O+0`,3KH.HD_O`!`K0/_P2H!6P40!2(%(P4J!9P0K0``,)BW_]`R#: XM_____V882H%G!%*M__Q*K?_\;P8@+?_\8%9P_V!22H-G!%.L!#Q*K?_P9C@@+ XM+?_\8#YP`"!L!#P0$"M`__12K`0\0>P!7='M__00$`@```-FX"(M__2RK?_X# XM9P#^XB`M__Q@#%*M__Q@`/[4("W__$S?``Q.74YU3E7__'``(&P$/!`04JP$0 XM/"M`__Q*@&8"</].74YU```DB4JJ``1P84Y5__!(YR``<``K0/_\*T#_^"M`K XM__`@;0`($A`,`0`M9@QP`2M`__@K0/_P8`P,`0`K9@9P`2M`__AP`"!M``@B) XM+?_X$#`8`"\`3KKZ+%A/2H!G*B`M__QR"DZZ$[PB+?_X4JW_^'0`(&T`"!0P_ XM&`#0@@2`````,"M`__Q@O$JM__!G!$2M__P@;0`,(*W__"`M__A,WP`$3EU.J XM=4Y5__)(YP`@0BW_^W`(*T#__%.M__P@+0`,(@`"@0````]![`+0T<$B+?_\" XM&Y`8\^B`*T``#`*`#____RM```Q*K0`,9LQ![?_ST>W__")()&T`"!399OQPJ XM")"M__Q,WP0`3EU.=4Y5```O+0`,+RT`"&&,4$].74YU``!.5?_P2.<@('`+" XM*T#_\$(M__]3K?_P("T`#"(``H$````'!H$````P)"W_\!N!*/3F@"M```P") XM@!____\K0``,2JT`#&;,0>W_]-'M__`B2"1M``@4V6;\<`N0K?_P3-\$!$Y=M XM3G5.50``+RT`#"\M``AAC%!/3EU.=0``3E7_\$CG`"!P"RM`__!"+?__4ZW_. XM\"`M``QR"DZZ$;P&@0```#`@+?_P&X$(]"`M``QR"DZZ$:0K0``,2JT`#&;0G XM0>W_]-'M__`B2"1M``@4V6;\<`N0K?_P3-\$`$Y=3G4``"!O``0B;P`(<`!RR XM`!`8$AD,``!A;0H,``!Z;@0$```@#`$`86T*#`$`>FX$!`$`()"!9@1*`6;46 XM3G4``$Y5__A(YP$`(&T`#$H89OQ3B)'M``PN""!M``A*&&;\4XB1[0`((`@B) XM;0`(T\`K2?_X(BT`$+Z!8P(N`2`'(&T`#&`"$MA3@&3Z(&W_^$(P>``@+0`(E XM3-\`@$Y=3G4``$Y5__PK;0`(__P@;?_\2A!G&'``$!`O`$ZZ`!I83R!M__P03 XM@%*M__Q@X"`M``A.74YU```@+P`$#```86T*#```>FX$!```($YU``!.5?_XM XM+RT`"$ZZ]7983RM`__A*@&8$</]@2"!M__@(*``#``-G$DAX``)"IR\M``A.[ XMNO>*3^\`#"\M`!`O+0`,(&W_^"\H``1.NA)*3^\`#"M`__Q*K``89P1P_V`$8 XM("W__$Y=3G4``$Y5_^Q(YR`@)&T`#"`M``@B*@`8)`$"@@```#$K0/_T2H)GT XM!G#_8``"R"`!`H```(``5L)$`DB"2,(;0O_^2JH`%&8``)((`0`"9@``BG``Y XM)4``#`RM_____P`(9P`"DB\*3KH"E%A/2H!G#`CJ``4`&W#_8``">@CJ``$`T XM&THM__YG#B`J`!0B`$2!)4$`#&`(("H`%"5```Q3J@`,("H`#$J`:Q0@:@`$H XM4JH`!"`M``@0@'(`$A!@%B`M``@"@````/\O"B\`80#_-E!/(@`@`6```AP(K XM*@`"`!MG:"(M``@,@?____]F!G``8``"`AM!__]*+?_^9R8,@0````IF'G`"> XM+P!(;`+D+RH`'"M`__!.NOZ$3^\`#"M`__A@''`!+P!(;?__+RH`'"M`__!.Z XMNOYF3^\`#"M`__AP_RM```A@``#\".H``0`;2BW__F=6(BT`"`R!_____V=*8 XM5*H`#`R!````"F8B(&H`!%*J``00O``-2JH`#&L,+PI(>/__80#^?%!/4JH`T XM#"!J``12J@`$("T`"!"`2JH`#&L``5!P_RM```@@*@`$D*H`$"M`__!*@&<`` XM`(((*@`&`!IG7DAX``)"IR\J`!Q.NO6&3^\`#"M`_^Q*+?_^9T)3K?_L("W_P XM[$J`:S9"IR\`+RH`'$ZZ]6!/[P`,2'@``4AM__TO*@`<3KKWO$_O``Q*K``8% XM9@P0+?_]#```&F?`3G$O+?_P+RH`$"\J`!Q.NOUJ3^\`#"M`__A@!G``*T#_[ XM^"(M__@,@?____]F"`CJ``4`&V`,LJW_\&<&".H`!``;2BW__F<.("H`%"(`H XM1($E00`,8!@(*@`"`!MG"'``)4``#&`(("H`%"5```P@:@`0)4@`!"(M``@,S XM@?____]G+%.J``P@*@`,2H!K$"!J``12J@`$$(%P`!`08!`"@0```/\O"B\!^ XM80#].%!/("H`&`*`````,$J`9P1P_V`2(BW_]`R!_____V8$<`!@`B`!3-\$V XM!$Y=3G5.50``(&T`"$JH`!1G#`@H``,`&V8$<`!@/"\L`5A.NO,<6$\@;0`(N XM(4``!"%``!!*@&8*<`PI0`+,</]@&"%L`5@`%`*H____\P`8<``A0``,(4``4 XM"$Y=3G4``&<``I(O"G!A3E7_\$CG`3`D;0`(#*P````@!$!L``"0$A(,`0`@O XM9PP,`0`)9P8,`0`*9@12BF#H2A)G<B`L!$#E@%*L!$!![`1(T<`K2/_\#!(`= XM(F8H4HH@BDH29PH,$@`B9P12BF#R2A)F#$AX``%.N@TJ6$]@G$(24HI@EB!M` XM__P@BDH29Q@2$@P!`"!G$`P!``EG"@P!``IG!%**8.1*$F8"8`A"$E**8`#_L XM:$JL!$!F!B!L`$A@!$'L!$@I2`1$2JP$0&8``(9![`-4(DA'[`3()MDFV2;9( XM)MDVD29L`$@B:P`D2'@`*"\I``1(;`3(3KKZI$_O``Q![`3((@@D/````^XLE XM;`083J[_XBE`!0@@+`4(*4`%$'($*4$%#"E`!1@I0044Y8`K0/_PD\DL>``$O XM3J[^VBM`__0@;?_P(FW_]"-H``@`I'X`8#(L;`083J[_RBE`!0@L;`083J[_5 XMQ"E`!1!![`-F(@@D/````^TL;`083J[_XBE`!1A^!"`'(`<`@```@`&!K`4$P XM(`<@!P"```"``H&L!0P`K```@`,%%$JL`NAG!'``8`8@/```@``N`$*L`P@@: XM!R`'`(`````!*4`#!'`!*4`#*B`'(`<`@`````(I0`,F<`(I0`-,(`<@!P"`` XM````@"E``TA!^@Q&*4@`,"\L!$0O+`1`3KKME%!/0J=.NO!R6$],WPR`3EU.V XM=0``2H!K$"!J``12J@`$$(%P`!`08!`"@0``3E7_Q$CG("!P`!M\`"#_^W(`$ XM*T'_]G3_*T+_\D'M_]`;0/_Q&T#__!M`__T;0/_^&T#__RM!_^0K0?_H*TC_L XMS"!M``A*$&=4$!`"0`#_<AA=06M(L'L0"&;V3OL0!``C8```+``@8```'@`KF XM8```$``M8````AM\``'__V`8&WP``?_^8!`;?``!__U@"!M\``'__$YQ4JT`? XM"&"D(&T`"!(0#`$`,&8*&WP`,/_[4JT`""!M``@,$``J9A(B;0`,(%%8D2M0[ XM__92K0`(8!!(;?_V+PA.NO9>4$_1K0`((&T`"!(0#`$`+F8P4JT`""!M``@,^ XM$``J9A(B;0`,(%%8D2M0__)2K0`(8!!(;?_R+PA.NO8B4$_1K0`((&T`"!(0C XM#`$`;&8,&WP``?_Q4JT`"&`*#`$`:&8$4JT`""!M``@0$%*M``@;0/_P`D``2 XM_W(P74%K``)NL'L0"&;T3OL0!`!C8``"1`!S8``!_`!88``!B@!X8``!A`!P] XM8``!;`!O8``!&@!U8```\`!D8````DHM__%G#")M``P@45B1(!!@"B)M``P@F XM45B1(!`K0/_L2H!J"G(!1*W_["M!_^A*K?_H9P1P+6`,2BW__F<$<"M@`G`@> XM&T#_T'``$"W__B(M_^B"@'``$"W__8*`2H%G"%*M_\Q2K?_D+RW_["\M_\Q.9 XMNO;&4$\K0/_(2JW_\FH&<`$K0/_R("W_R"(M__*2@"M!_\1*@6\R(&W_S")(O XMT\$B`"1(8`(2VE.!9/IP`!`M__LB+?_$(&W_S&`"$,!3@63Z("W_\BM`_\C18 XMK?_D0>W_T"M(_\Q*+?__9P`!7!M\`"#_^V```5)*+?_Q9PPB;0`,(%%8D2`0G XM8`HB;0`,(%%8D2`0*T#_[&``_UY*+?_Q9PPB;0`,(%%8D2`08`HB;0`,(%%8O XMD2`0*T#_[$HM__QG$B!M_\P0O``P4JW_S'(!*T'_Y"\`+RW_S$ZZ]7!03RM`O XM_\A@`/\D&WP`,/_[2JW_\FH&<`@K0/_R2BW_\6<,(FT`#"!16)$@$&`*(FT`O XM#"!16)$@$"M`_^Q*+?_\9QX@;?_,$+P`,%*M_\P@;?_,$+P`>%*M_\QR`BM!' XM_^0O`"\M_\Q.NO2*4$\K0/_(#"T`6/_P9@#^M$AM_]!.NO9J6$]@`/ZF(FT`. XM#"!16)$B4"M)_\RR_```9@A![`-L*TC_S"!M_\Q*&&;\4XB1[?_,*TC_Y$JM: XM__)K+B(M__*QP6\F*T'_Y&`@<`$K0/_D(FT`#"!16)$@$!M`_]!"+?_18`9P# XM`&```*@B+?_D)"W_]K2!;`AP`"M`__9@!).M__9*+?__9T)3K?_D("W_Y$J`- XM:QAP`"!M_\P0$%*M_\PO`"!M`!!.D%A/8-Q3K?_V("W_]DJ`:U1P`!`M__LO8 XM`"!M`!!.D%A/8.)3K?_V("W_]DJ`:Q)P`!`M__LO`"!M`!!.D%A/8.)3K?_D_ XM("W_Y$J`:QAP`"!M_\P0$%*M_\PO`"!M`!!.D%A/8-P@+0`(3-\$!$Y=3G5.` XM5?_V*VT`$/_V(&T`#!`04JT`#!M`__]*`&=V#```)68P(&T`#`P0`"5F!E*MW XM``Q@("\M``A(;?_V+PAA`/M,3^\`#"M`__I*@&<&*T``#&"X2JP`-&<F""T`9 XM!___9QYP`!`M__\O`"!M``A.D%A/(&T`#!`04JT`#!M`__]P`!`M__\O`"!M" XM``A.D%A/8`#_>DY=3G4@;0`,3I!P84Y5_^!(YR``<`!R`"!M``@2$$'L`5W1B XMP1(0*T#_]"M`__`(`0`"9S@@+?_P<@I.N@8(<@`@;0`($A!2K0`(`H$````/5 XMT($K0/_P<``@;0`($!!![`%=T<`0$`@```)FR"!M``@2$`P!`&QF#%*M``AP= XM`2M`__1@"@P!`&AF!%*M``@@;0`,3I`K0/_\(&T`"`P0`&-G'$'L`5W1[?_\G XM$!`(```#9PP@;0`,3I`K0/_\8.0B+?_\#('_____9@P@;0`0((%P`&``!(P@" XM;0`($!`"0`#_<C9=06L`!&:P>Q`(9O1.^Q`$`'-@``0.`&-@``.D`&A@``,DI XM`%A@``&D`'A@``&>`'!@``&,`&]@``#V`&1@```.`'5@```"0JW_[&!*<``K^ XM0/_L2JW_\&<*#*T````!__!O-"0M__P,@@```"UG"`R"````*V8@#((````M^ XM9@1R_V`"(@`K0?_L(&T`#$Z04ZW_\"M`__Q![`%=("W__-'`$A`(`0`"9@P@E XM;0`0((!P`&```\Q"K?_H("W_Z'(*3KH$HB(M__P"@0````_0@2M`_^@@;0`,( XM3I`K0/_\4ZW_\"`M__!*@&<00>P!7='M__P0$`@```)FP$JM`!1G``-P2JW_? XM[&H$1*W_Z$JM__1F$")M`!0@42`M_^@@@&```U`B;0`4(%$@K?_H8``#0B(MI XM__P,@0```#!M"`R!````-V\,(&T`$""!<`!@``,R0JW_Z"`M_^CG@"(M__P"L XM@0````?0@2M`_^@@;0`,3I`K0/_\4ZW_\"`M__!*@&<4(BW__`R!````,&T(T XM#($````W;\!*K0`49P`"UDJM__1F$")M`!0@42`M_^@@@&```L`B;0`4(%$@; XMK?_H8``"LDJM__!F!G`(*T#_\$'L`5T@+?_\T<`2$`@!``=F#"!M`!`@@'``! XM8``"F"MM__S_^"!M``Q.D"M`__Q*K?_P9PH,K0````+_\&]*#*T````P__AFA XM0`R`````>&<(#(````!89C`@;0`,3I!![`%=(DC3P!(1*T#__`@!``=F#")M& XM`!`B@'``8``".$*M_^A3K?_P8$Q![`%=("W_^")(T\`2$0@!``)G#"(`!($`! XM```P*T'_Z")(T\`2$0@!``!G#"(`!($````W*T'_Z-'`$A`(`0`!9PH$@```" XM`%<K0/_H4ZW_\"`M__!*@&=N0>P!72`M__PB2-/`$A$(`0`'9UHB+?_HZ8$BY XM2-/`%!$K0?_H"`(``F<,(@`$@0```#"#K?_H(DC3P!(1"`$``&<,(@`$@0``# XM`#>#K?_HT<`2$`@!``%G"@2`````5X&M_^@@;0`,3I`K0/_\8(9*K0`49P`!B XM4$JM__1F$")M`!0@42`M_^@@@&```3HB;0`4(%$@K?_H8``!+$'L`5T@+?_\; XMT<`2$`@!``)F#"!M`!`@@'``8``!'D*M_^P@+?_L<@I.N@'T(BW__`*!````T XM#]"!*T#_["!M``Q.D"M`__Q3K?_P("W_\$J`9Q!![`%=T>W__!`0"````F;`3 XM2JT`%&<``,(B;0`4(%$@+?_L,(!@``"R2JT`%&<.(FT`%"!14I$@+?_\$(!3D XMK?_P("W_\$J`;R0@;0`,3I`K0/_\#(#_____9Q)*K0`49]PB;0`4(%%2D1"`H XM8-`B+?_\#('_____9@H@;0`0((%P`&!F(&T`"%*((`A@7$JM`!1G#B)M`!0@] XM45*1("W__!"`(&T`#$Z0*T#__%*`9QQ3K?_P("W_\$J`9Q!![`%=T>W__!`0. XM"````V?"(FT`%"!10A!@!'``8!`@;0`0(*W__"!M``A2B"`(3-\`!$Y=3G5*! XM@&H``!Y$@$J!:@``#$2!80``($2!3G5A```81(!$@4YU2H%J```,1(%A```&- XM1(!.=2\"2$$T`68``")(0$A!2$(T`&<```:$P3`"2$`T`(3!,`)(0C(")!].S XM=2\#=A`,00"`9```!N&944,,00@`9```!NF964,,02``9```!N6954-*06L`R XM``;CF5-#-`#FJ$A"0D+FJDA#@,$V`#`"-`-(0<3!D()D```(4T/0@63^<@`R< XM`TA#Y[A(0,-`)A\D'TYU+GD```!,3KD```7D+SP````43KD```8\($(B0R0`9 XM)@%(0DA#Q,'&P,#!U$-(0D)"T((F"20(3G5.5?_X2.<!('X`1>P%!+ZL`X1L< XM'DJ29Q0(*@`"``-G`F`*+RH`!$ZZ`?A83U*'4(I@W"\M``PO+0`(3KK?EE!/; XM3-\$@$Y=3G5.5?_\<``B/```,``L>``$3J[^S@*````P`"M`__Q*@&8$<`!@% XM)$JL`#!G&B!L`#!.D$J`9@1P`&`00J=(>``43KK_=E!/("W__$Y=3G5AL$YU< XM``!*K`0<9A)#[`0$<``L>``$3J[]V"E`!!PI;`!4`\1(>``\2'@`^G``+P`OK XM`$AL`_!(;`/62&P#N"\`3KKC'$_O`"!3@&<$</]@`G``3G4``$Y5__Q(YP$`' XM2JP`,&<$3KK_3$*L`!@B+0`()"T`#"8M`!`L;`083J[_UBX`#(?_____9A(LG XM;`083J[_?"E``!AP!2E``LP@!TS?`(!.74YU3E7__$CG`0!*K``P9P1.NO[\- XM0JP`&"(M``@D+0`,)BT`$"QL!!A.KO_0+@`,A_____]F$BQL!!A.KO]\*4``E XM&'`%*4`"S"`'3-\`@$Y=3G5.5?_X2.<Q`DJL`#!G!$ZZ_JQ"K``8("T`$%.`Y XM+T``$"(M``@D+0`,)B\`$"QL!!A.KO^^+@`,A_____]F$BQL!!A.KO]\*4``. XM&'`6*4`"S"`M`!`,@`````)G'`R``````6<*2H!F(B`M``Q@'"`'(`?0K0`,_ XM8!(B+0`(=`!V`"QL!!A.KO^^3G%,WT",3EU.=0``3E4``$JL`#!G!$ZZ_APB\ XM+0`(+&P$&$ZN_]QP`$Y=3G4```/L`````@```````"$X```A+`````0````!Z XM```A)@``!58```$2````#@````````/R```#Z@```0L`````````````````Q XM````````````````````````````````````````````````````````````` XM`````````````````````````````````````````````&1O<RYL:6)R87)YI XM`%5S86=E.B`@5TU/5D4@9'@@9'D@6W=I;F1O=R!;<V-R965N75T*```E;&0`] XM0V%N)W0@9FEN9"!S8W)E96X@)R5S)PH`0V%N)W0@9FEN9"!W:6YD;W<@)R5SC XM)R!O;B!S8W)E96X@)R5S)PH``&EN='5I=&EO;BYL:6)R87)Y``I7:6YD;W<@\ XM)R5S)R!O;B!38W)E96X@)R5S)PH``"`@($]L9"!P;W-I=&EO;CH@("@E9"PE# XM9"D*```@("!.97<@<&]S:71I;VXZ("`H)60L)60I"B`@($-H86YG960Z("`@M XM("`@("@E9"PE9"D*"@```````@``("`@("`@("`@*"@H*"@@("`@("`@("`@- XM("`@("`@("!($!`0$!`0$!`0$!`0$!`0A(2$A(2$A(2$A!`0$!`0$!"!@8&!4 XM@8$!`0$!`0$!`0$!`0$!`0$!`0$!`1`0$!`0$(*"@H*"@@("`@("`@("`@("8 XM`@("`@("`@("$!`0$"`@("`@("`@("`H*"@H*"`@("`@("`@("`@("`@("`@Z XM($@0$!`0$!`0$!`0$!`0$!"$A(2$A(2$A(2$$!`0$!`0$(&!@8&!@0$!`0$![ XM`0$!`0$!`0$!`0$!`0$!$!`0$!`0@H*"@H*"`@("`@("`@("`@("`@("`@("? XM`@(0$!`0(````/__````#@`.````````````````*BH@4W1A8VL@3W9E<F9LV XM;W<@*BH``/__````!``$`````````G0```)@15A)5```__\````$``0`````X XM```"G@````!I;G1U:71I;VXN;&EB<F%R>0`````````P,3(S-#4V-S@Y86)C9 XM9&5F``````T*`````(`````##@``````````````````````````````````7 XM`````````S``````````````````````````````````````````````````S XM``````````````````````````````````````!C;VXZ,3`O,3`O,S(P+S@P& XM+P`J```````````````````````````````````````````H*BH@57-E<B!!U XM8F]R="!297%U97-T960@*BH``/__````#@`.`````````X@`````__\````$D XM``0``````````````Z1#3TY424Y510``__\````$``0````````#S`````!!F XM0D]25`#__P````0`!`````````/J`````&EN='5I=&EO;BYL:6)R87)Y````P XM````````````````````````!`````/L````"0````$```/\```#X@```\@`L X?``.P```##@```NP```*P```"F@```I8````````#\@$`. X`` Xend Xsize 10336 END_OF_FILE if test 14508 -ne `wc -c <'wmove.uu'`; then echo shar: \"'wmove.uu'\" unpacked with wrong size! fi # end of 'wmove.uu' fi echo shar: End of archive 1 \(of 2\). cp /dev/null ark1isdone MISSING="" for I in 1 2 ; do if test ! -f ark${I}isdone ; then MISSING="${MISSING} ${I}" fi done if test "${MISSING}" = "" ; then echo You have unpacked both archives. 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.misc.