dl2n+@andrew.cmu.edu (Daniel Edward Lovinger) (07/07/90)
Submitted-by: Daniel Edward Lovinger <dl2n+@andrew.cmu.edu> Posting-number: Volume 8, Issue 40 Archive-name: xlife/part04 #! /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 4 (of 8)." # Contents: xlife-2.0/Imakefile xlife-2.0/cell.c # xlife-2.0/doc/on_blockpushers xlife-2.0/generate.c # xlife-2.0/main.c xlife-2.0/patterns/blockpusher3.life # xlife-2.0/patterns/oscillator7.life # xlife-2.0/patterns/rakecollision.life xlife-2.0/tab.h # Wrapped by dl2n@niobe.weh.andrew.cmu.edu on Mon Jul 2 22:48:08 1990 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f xlife-2.0/Imakefile -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"xlife-2.0/Imakefile\" else echo shar: Extracting \"xlife-2.0/Imakefile\" \(3709 characters\) sed "s/^X//" >xlife-2.0/Imakefile <<'END_OF_xlife-2.0/Imakefile' X#Imakefile for xlife 2.0 X X#define ManSuffix n /* For sites where administrators have messed with this */ X XPROGRAMS = xlife lifeconv X XXLIFEPATSDIR = /afs/andrew.cmu.edu/usr0/games/lib/xlife X X XPATTERNS = \ X 12gliders.life \ X 2_ak47.life \ X acorn.life \ X ak47.life \ X alu.life \ X background1.life \ X baker.life \ X barberpole.life \ X beaconmaker.life \ X benchmark.life \ X bheptomino.life \ X bigglider.life \ X billiards.life \ X blinkership.life \ X blinkership2.life \ X blinkership3.life \ X blockpusher.life \ X blockpusher2.life \ X blockpusher3.life \ X blockpusher4.life \ X boatcap.life \ X boatmaker.life \ X breeder.life \ X bunnies.life \ X centinal.life \ X cheshirecat.life \ X citiesindust.life \ X clappinghands.life \ X clock.life \ X cmu.life \ X cmu2.life \ X cmu3.life \ X collapsecap.life \ X counter.life \ X cow.life \ X cross.life \ X diagfuse.life \ X eaters3.life \ X f.life \ X f2.life \ X f3.life \ X fencepost.life \ X figure8.life \ X fisheater.life \ X flasher.life \ X flywheel.life \ X fusebranch.life \ X fusecorner.life \ X fusehinge.life \ X futility.life \ X gardenofeden.life \ X gear.life \ X glider.life \ X gliderarmyof256.life \ X gliderbackcap.life \ X gliderforecap.life \ X glidergen1.life \ X glidergen2.life \ X glidergen3.life \ X glidergen4.life \ X glidergen5.life \ X glidergen6.life \ X glidergen7.life \ X gliderglidergun.life \ X glidergun.life \ X glidergun2.life \ X glidermesscap.life \ X gliders1_2.life \ X gliders2_2.life \ X gliders4_4.life \ X glidersidecap.life \ X glidersparcap.life \ X glidertofish.life \ X gourmet.life \ X greymatter1.life \ X gunandeater.life \ X harvester.life \ X horizfuse.life \ X j.life \ X kickback.life \ X lambdabomb.life \ X largefish.life \ X line.life \ X longfuse.life \ X longfuse2.life \ X longsnake.life \ X mediumfish.life \ X mediumfishgun.life \ X mediumfishgun2.life \ X morejunk.life \ X oscilators.life \ X oscillator1.life \ X oscillator2.life \ X oscillator3.life \ X oscillator6.life \ X oscillator7.life \ X p120glider.life \ X p24.life \ X p26.life \ X p28.life \ X p47.life \ X p54shuttle.life \ X p55.life \ X p66.life \ X p94.life \ X pentadecathlon.life \ X piecollection.life \ X pifuse.life \ X piston.life \ X piston2.life \ X puffertrain.life \ X pulsar18-22-20.life \ X pulsar48-56-72.life \ X pulse.life \ X pulse1.life \ X pulse2.life \ X pump.life \ X r.life \ X rabbit.life \ X rake.life \ X rake2.life \ X rake3.life \ X rake4.life \ X rake5.life \ X rake6.life \ X rake7.life \ X rakecollision.life \ X rakeshipgun.life \ X randomgun.life \ X relay.life \ X round.life \ X rpentomino.life \ X schooloffish.life \ X sglider.life \ X shiningflower.life \ X sixgliders.life \ X skyline.life \ X slowship.life \ X slowship2.life \ X slowship3.life \ X smallfish.life \ X smallfishgun.life \ X somejunk.life \ X spark.life \ X spark2.life \ X sparkfuse.life \ X sparktopifuse.life \ X squareblinker.life \ X squarecap.life \ X squaredance.life \ X stargaterepeater.life \ X switchengine.life \ X test.life \ X testtube.life \ X testtubebaby.life \ X thunderbird.life \ X thunderbirdfuse.life \ X turbine8.life \ X washerwoman.life \ X wave1.life X XSRCS1 = \ X button.c\ X cell.c\ X cellbox.c\ X data.c\ X expose.c\ X file.c\ X file_misc.c \ X generate.c\ X gentab.c\ X help.c\ X key.c\ X keyin.c\ X main.c\ X motion.c\ X resize.c\ X utils.c X XOBJS1 = \ X button.o\ X cell.o\ X cellbox.o\ X data.o\ X expose.o\ X file.o\ X file_misc.o \ X generate.o\ X gentab.o\ X help.o\ X key.o\ X keyin.o\ X main.o\ X motion.o\ X resize.o\ X utils.o X XSRCS2 = \ X lifeconv.c X XOBJS2 = \ X lifeconv.o X XAllTarget($(PROGRAMS)) X XComplexProgramTarget_1(xlife, -L/usr/local/lib $(XLIB),) XComplexProgramTarget_2(lifeconv,,) X Xinstall.patterns: X @case '${MFLAGS}' in *[i]*) set +e;; esac; \ X for i in $(PATTERNS) ; do \ X (set -x; $(INSTALL) -c $(INSTDATFLAGS) patterns/$$i $(XLIFEPATSDIR)); \ X done END_OF_xlife-2.0/Imakefile if test 3709 -ne `wc -c <xlife-2.0/Imakefile`; then echo shar: \"xlife-2.0/Imakefile\" unpacked with wrong size! fi # end of overwriting check fi if test -f xlife-2.0/cell.c -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"xlife-2.0/cell.c\" else echo shar: Extracting \"xlife-2.0/cell.c\" \(7759 characters\) sed "s/^X//" >xlife-2.0/cell.c <<'END_OF_xlife-2.0/cell.c' X/* X * XLife Copyright 1989 Jon Bennett jb7m+@andrew.cmu.edu, jcrb@cs.cmu.edu X * X * Permission to use, copy, modify, distribute, and sell this software and its X * documentation for any purpose is hereby granted without fee, provided that X * the above copyright notice appear in all copies and that both that X * copyright notice and this permission notice appear in supporting X * documentation, and that the name of the copyright holders not be used in X * advertising or publicity pertaining to distribution of the software without X * specific, written prior permission. The copyright holders make no X * representations about the suitability of this software for any purpose. It X * is provided "as is" without express or implied warranty. X * X * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, X * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO X * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR X * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, X * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER X * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR X * PERFORMANCE OF THIS SOFTWARE. X */ X X#include "defs.h" X#include "data.h" X#include "cellbox.h" X#include "stdio.h" X Xint getcell(ptr, xdx, ydx) X/* get state of cell xdx, ydx within box *ptr */ Xcellbox *ptr; Xint xdx, ydx; X{ X if (ydx > 3) X return(ptr->live2 & 1 << ( (ydx - 4)*8 + xdx)); X else X return(ptr->live1 & 1 << ( ydx*8 + xdx)); X} X Xvoid setcell(ptr, xdx, ydx, val) X/* set state of cell xdx, ydx within box *ptr */ Xcellbox *ptr; Xint xdx, ydx, val; X{ X if (val) X { X if (ydx > 3) X ptr->live2 |= 1 << ( (ydx - 4)*8 + xdx); X else X ptr->live1 |= 1 << ( ydx*8 + xdx); X } X else X { X if (ydx > 3) X ptr->live2 &= 0xffffffff^(1 << ( (ydx - 4)*8 + xdx)); X else X ptr->live1 &= 0xffffffff^(1 << ( ydx*8 + xdx)); X } X} X Xvoid forget(ptr) X/* remove a box's info about last generation's state */ Xcellbox *ptr; X{ X ptr->olive1 ^= ptr->olive1; X ptr->olive2 ^= ptr->olive2; X} X Xstatic void displayline(line,x,y,oline) X/* post changes in a half-cell to the X structure arrays */ Xunsigned long line,x,y,oline; X{ X int sc,yy; X unsigned long diff; X sc = (1 << (scale -1)) - (scale > 2); X diff=line ^ oline; X if (scale == 1){ X if(diff & 0x1){ X if(line & 0x1){ X onpoints[onpt].x= x - xpos; X onpoints[onpt].y= y - ypos; X onpt++; X } X else{ X offpoints[offpt].x= x - xpos; X offpoints[offpt].y= y - ypos; X offpt++; X } X } X ++x; X if(diff & 0x2){ X if(line & 0x2){ X onpoints[onpt].x= x - xpos; X onpoints[onpt].y= y - ypos; X onpt++; X } X else{ X offpoints[offpt].x= x - xpos; X offpoints[offpt].y= y - ypos; X offpt++; X } X } X ++x; X if(diff & 0x4){ X if(line & 0x4){ X onpoints[onpt].x= x - xpos; X onpoints[onpt].y= y - ypos; X onpt++; X } X else{ X offpoints[offpt].x= x - xpos; X offpoints[offpt].y= y - ypos; X offpt++; X } X } X ++x; X if(diff & 0x8){ X if(line & 0x8){ X onpoints[onpt].x= x - xpos; X onpoints[onpt].y= y - ypos; X onpt++; X } X else{ X offpoints[offpt].x= x - xpos; X offpoints[offpt].y= y - ypos; X offpt++; X } X } X ++x; X if(diff & 0x10){ X if(line & 0x10){ X onpoints[onpt].x= x - xpos; X onpoints[onpt].y= y - ypos; X onpt++; X } X else{ X offpoints[offpt].x= x - xpos; X offpoints[offpt].y= y - ypos; X offpt++; X } X } X ++x; X if(diff & 0x20){ X if(line & 0x20){ X onpoints[onpt].x= x - xpos; X onpoints[onpt].y= y - ypos; X onpt++; X } X else{ X offpoints[offpt].x= x - xpos; X offpoints[offpt].y= y - ypos; X offpt++; X } X } X ++x; X if(diff & 0x40){ X if(line & 0x40){ X onpoints[onpt].x= x - xpos; X onpoints[onpt].y= y - ypos; X onpt++; X } X else{ X offpoints[offpt].x= x - xpos; X offpoints[offpt].y= y - ypos; X offpt++; X } X } X ++x; X if(diff & 0x80){ X if(line & 0x80){ X onpoints[onpt].x= x - xpos; X onpoints[onpt].y= y - ypos; X onpt++; X } X else{ X offpoints[offpt].x= x - xpos; X offpoints[offpt].y= y - ypos; X offpt++; X } X } X } X else{ X yy=((y - ypos) << (scale -1)); X if(diff & 0x1){ X if(line & 0x1){ X onrects[onrect].x= ((x - xpos) << (scale -1)); X onrects[onrect].y= yy; X onrects[onrect].width = sc; X onrects[onrect].height = sc; X onrect++; X } X else{ X offrects[offrect].x= ((x - xpos) << (scale -1)); X offrects[offrect].y= yy; X offrects[offrect].width = sc; X offrects[offrect].height = sc; X offrect++; X } X } X ++x; X if(diff & 0x2){ X if(line & 0x2){ X onrects[onrect].x= ((x - xpos) << (scale -1)); X onrects[onrect].y= yy; X onrects[onrect].width = sc; X onrects[onrect].height = sc; X onrect++; X } X else{ X offrects[offrect].x= ((x - xpos) << (scale -1)); X offrects[offrect].y= yy; X offrects[offrect].width = sc; X offrects[offrect].height = sc; X offrect++; X } X } X ++x; X if(diff & 0x4){ X if(line & 0x4){ X onrects[onrect].x= ((x - xpos) << (scale -1)); X onrects[onrect].y= yy; X onrects[onrect].width = sc; X onrects[onrect].height = sc; X onrect++; X } X else{ X offrects[offrect].x= ((x - xpos) << (scale -1)); X offrects[offrect].y= yy; X offrects[offrect].width = sc; X offrects[offrect].height = sc; X offrect++; X } X } X ++x; X if(diff & 0x8){ X if(line & 0x8){ X onrects[onrect].x= ((x - xpos) << (scale -1)); X onrects[onrect].y= yy; X onrects[onrect].width = sc; X onrects[onrect].height = sc; X onrect++; X } X else{ X offrects[offrect].x= ((x - xpos) << (scale -1)); X offrects[offrect].y= yy; X offrects[offrect].width = sc; X offrects[offrect].height = sc; X offrect++; X } X } X ++x; X if(diff & 0x10){ X if(line & 0x10){ X onrects[onrect].x= ((x - xpos) << (scale -1)); X onrects[onrect].y= yy; X onrects[onrect].width = sc; X onrects[onrect].height = sc; X onrect++; X } X else{ X offrects[offrect].x= ((x - xpos) << (scale -1)); X offrects[offrect].y= yy; X offrects[offrect].width = sc; X offrects[offrect].height = sc; X offrect++; X } X } X ++x; X if(diff & 0x20){ X if(line & 0x20){ X onrects[onrect].x= ((x - xpos) << (scale -1)); X onrects[onrect].y= yy; X onrects[onrect].width = sc; X onrects[onrect].height = sc; X onrect++; X } X else{ X offrects[offrect].x= ((x - xpos) << (scale -1)); X offrects[offrect].y= yy; X offrects[offrect].width = sc; X offrects[offrect].height = sc; X offrect++; X } X } X ++x; X if(diff & 0x40){ X if(line & 0x40){ X onrects[onrect].x= ((x - xpos) << (scale -1)); X onrects[onrect].y= yy; X onrects[onrect].width = sc; X onrects[onrect].height = sc; X onrect++; X } X else{ X offrects[offrect].x= ((x - xpos) << (scale -1)); X offrects[offrect].y= yy; X offrects[offrect].width = sc; X offrects[offrect].height = sc; X offrect++; X } X } X ++x; X if(diff & 0x80){ X if(line & 0x80){ X onrects[onrect].x= ((x - xpos) << (scale -1)); X onrects[onrect].y= yy; X onrects[onrect].width = sc; X onrects[onrect].height = sc; X onrect++; X } X else{ X offrects[offrect].x= ((x - xpos) << (scale -1)); X offrects[offrect].y= yy; X offrects[offrect].width = sc; X offrects[offrect].height = sc; X offrect++; X } X } X } X X} X Xvoid displaybox(x, y, ptr) Xunsigned long x, y; Xcellbox *ptr; X{ X register unsigned long live1 = ptr->live1; X register unsigned long live2 = ptr->live2; X register unsigned long olive1 = ptr->olive1; X register unsigned long olive2 = ptr->olive2; X X displayline(live1,x,y,olive1); X displayline(live1>>8,x,++y,olive1>>8); X displayline(live1>>16,x,++y,olive1>>16); X displayline(live1>>24,x,++y,olive1>>24); X displayline(live2,x,++y,olive2); X displayline(live2>>8,x,++y,olive2>>8); X displayline(live2>>16,x,++y,olive2>>16); X displayline(live2>>24,x,++y,olive2>>24); X X} X END_OF_xlife-2.0/cell.c if test 7759 -ne `wc -c <xlife-2.0/cell.c`; then echo shar: \"xlife-2.0/cell.c\" unpacked with wrong size! fi # end of overwriting check fi if test -f xlife-2.0/doc/on_blockpushers -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"xlife-2.0/doc/on_blockpushers\" else echo shar: Extracting \"xlife-2.0/doc/on_blockpushers\" \(8597 characters\) sed "s/^X//" >xlife-2.0/doc/on_blockpushers <<'END_OF_xlife-2.0/doc/on_blockpushers' XHere are some excerpts from my latest letter to Bob Wainwright, including Xa description of block pusher 3, another example of glider self-repair, Xand some p3s: X X Last month I spent quite a bit of time trying to build a smaller block Xpusher. After building a smaller catcher as described in my 12/14/89 Xletter, I went to work on the shotgun. By adding 90 degree turns to Xreposition the glider sources, I was able to squeeze everything into a X271x289 rectangle. I ran "block pusher 2" for 10000 generations, during Xwhich the block moved 10 times. That's enough to determine the min and max Xpopulations: 2389 and 2584. But I was annoyed because it was still too big Xfor my fast screen-oriented program. So I decided to look for a smaller Xsalvo which could push a block. I started searching through the 2 glider + Xblock collisions, hoping to find one which would move the block and send Xback a glider. It seemed unlikely that the block would actually be pushed Xalong the diagonal, but I figured that I could use one of the many 2 glider X+ block collisions which just move the block to put the block back on the Xright diagonal, a convenient distance downstream. But after watching a few Xhundred collisions, I found something even better: one which produced a Xblock 10 units downstream, sent back a glider, and produced some other junk X(a traffic light and 2 blocks) upstream from the new block. It seemed Xlikely that I could find a way to add a third glider to suppress the junk. XI didn't quite manage that, despite a fairly thorough search. But I did Xfind a way to add a glider so the junk was suppressed and a second return Xglider was produced. Here's the salvo about to push a block; the reaction Xtakes 135 generations: X X .o.......,.........,......... X ..o......,.........,......... X ooo......,.........,......... X .........,.........,......... X .........,.........,......... X .........,.........,......... X .........,.........,......... Figure 0 X .........,.........,......... X .........,.........,......o.o X .........,.........,.......oo X .........,.........,.......o. X .........,.........,o........ X .........,.........,.oo...oo. X .........,.........,oo....oo. X X Because the 3 gliders's flightpaths are fairly far apart, I was able Xto build a shotgun without needing the G+LW -> G reaction. Instead, I used Xa salvoing method which I'd thought of earlier but couldn't use for the 5 Xglider salvo: X X G1 G0 X \ / X \/ E X /\ / X / X X \ R Figure 1 X \ X G3 X X \ / X / \ \/ X / \/\ X G2 /\ \ X \ \ \ X \ \ X \ X XHere G denotes a gun, E an eater, and R a rephaser. The G0 and G1 streams Xcross without interacting, as do the G0 and G2 streams. The G0 stream Xmakes a 90 degree turn after crossing the G1 stream. The G1 and G2 streams Xthen meet at a rephaser, which pulls the G1 stream 6 units to the left, Xbringing it closer to the G0 stream than a 90 degree turn by itself can. XThis produces the two lead gliders of the salvo. The third is added by a Xfourth gun whose output makes a 90 degree turn. X X The wideness of the salvo (and its fixed geometry) made building a Xsuppressor harder. There's no way to destroy the salvo with just one Xperpendicular glider. So I used two, one from the catcher and another Xwhich I call the assistant. The one from the catcher strikes the two lead Xgliders and creates a half honey farm. The assistant destroys one beehive Xand the third salvo glider destroys the other. But if the glider from the Xcatcher is missing (as it will be when the catcher detects a return Xglider), then the assistant passes through the salvo without harming it and Xthen gets eaten. So I didn't need extra circuitry to delete the assistant Xwhen a return is detected. Here's how the annihilation works; also shown Xis the eater which eats the assistant when the glider from the catcher is Xabsent: X X .........,.........,.........,....a.a X .........,.........,.........,....aa. X .........,.........,.........,.....a. X .........,.........,.........,....... X .o.......,.........,.........,....... X ..o......,.........,.........,....... X ooo......,.........,.........,....... X .........,.........,.........,....... X .........,.........,.........,....... X .........,.........,.........,....... X .........,.........,.........,....... Figure 2 X .........,.........,.........,....... X .........,.........,......o.o,....... X .........,.........,.......oo,....... X .........,.........,.......o.,....... X .........,.........,o........,....... X .........,.........,.oo......,....... X .........,.........,oo.......,....... X .........,.........,.........,....... X .........,.........,.........,....... X .........,.........,.........,....... X .........,.........,.ccc.....,....... X .........,.........,...c.....,....... X .........,..ee.....,..c......,....... X .........,...e.....,.........,....... X .........,eee......,.........,....... X .........,e........,.........,....... X X Building a catcher was much harder, because of the extra return Xglider. Instead of using vanish reactions to detect the return, I had to Xuse ternaries. (Not the usual ternaries, since the 2 return gliders are on Xslightly different flightpaths.) Not surprisingly, such reactions turned Xout to be rare. As a result, I wasn't able to use just queen bee shuttles Xfor 90 degree turns to make the detectors cross the diagonal; I also had to Xuse a pair of inverting 90 degree turns (p30 guns). And there's another Xproblem: Each time the block gets pushed, the round trip time for the Xsalvo and return increases by 80. So there are 3 possible phases mod 120 Xfor the first return glider. (That's why the detectors have to cross the Xdiagonal in 3 places.) But the second return glider arrives about 80 Xgenerations behind the first; it's almost in the same position and phase as Xthe next return glider will be. So the detector that's farthest downstream Xmust be able to hit a first return glider in a certain place, but miss a Xsecond return glider in almost the same place. And of course the detectors Xmust not interfere with escaping salvos. Getting the geometry right was a Xreal pain! X X Anyway, I finally got "block pusher 3" working. The initial bounding Xbox is only 168x194. It runs in my screen-oriented program at 5.3 hertz Xfor 4107 generations, pushing the block 4 times; on the 5th push it hits Xthe edge. I also ran it in my Forth program (at 0.5 hertz) for 16852 Xgenerations, during which the block moved 13 times. The population Xfluctuates between 1185 and 1424. That could presumably be smoothed out Xsomewhat by pulling a couple of guns farther out to change their phases; 3 Xof the 6 p120 guns are synchronized. Also, I now know how to build a Xslightly smaller p120 gun, so the size could be decreased a bit. (Maybe Xlater. And maybe someday I'll build a squirt gun based on this.) X X. . . X XThe top glider in Figure 13 also repairs itself, changing 3/4'th of the Xforming honey farm into 2 boats. X X ....o.. X .....oo X ....oo. X ....... X o.o.... X .oo.... X .o..... X ....... X oo..... X oo..... X X Figure 13 X X Here are a few results from my search program. Figure 15 shows a Xsmaller p3 with an active corner. It fits in an 11x11 box; there are none Xin 10x11. (I don't know about 10xN for N between 12 and 22.) Figure 16 is Xa smaller version of Figure 1 of my 12/4/89 letter. Figures 17 and 18 show Xp3 billiard tables which act like 2 and 4 overlapping copies of Figure 16 Xand its kin. X X ......o.... X ......ooo.. X oo..oo...o. oo.oo.... ..oo.o..o ...oo.o.. X .o.o.o.oo.. o.oo...oo .o.o.oooo ...o.oo.. X ....oo.o... .....o..o .o.o..... oo.o..... X ..o.o..o... .ooo.ooo. oo.o.oo.. .o.o.oooo X ..o..ooo.oo o........ o......o. o.......o X oo.oo...o.o oo..oo... ..oo.o.o. oooo.o.o. X ...o..o.o.. .....o... ...o.oo.. .....o.oo X ..o.o...o.. ....o.... ...o..... ..oo.o... X oo....oo... ....oo... ..oo..... ..o.oo... X X Figure 15 Figure 16 Figure 17 Figure 18 END_OF_xlife-2.0/doc/on_blockpushers if test 8597 -ne `wc -c <xlife-2.0/doc/on_blockpushers`; then echo shar: \"xlife-2.0/doc/on_blockpushers\" unpacked with wrong size! fi # end of overwriting check fi if test -f xlife-2.0/generate.c -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"xlife-2.0/generate.c\" else echo shar: Extracting \"xlife-2.0/generate.c\" \(8368 characters\) sed "s/^X//" >xlife-2.0/generate.c <<'END_OF_xlife-2.0/generate.c' X/* X * XLife Copyright 1989 Jon Bennett jb7m+@andrew.cmu.edu, jcrb@cs.cmu.edu X * X * Permission to use, copy, modify, distribute, and sell this software and its X * documentation for any purpose is hereby granted without fee, provided that X * the above copyright notice appear in all copies and that both that X * copyright notice and this permission notice appear in supporting X * documentation, and that the name of the copyright holders not be used in X * advertising or publicity pertaining to distribution of the software without X * specific, written prior permission. The copyright holders make no X * representations about the suitability of this software for any purpose. It X * is provided "as is" without express or implied warranty. X * X * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, X * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO X * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR X * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, X * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER X * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR X * PERFORMANCE OF THIS SOFTWARE. X * X * CMU SUCKS X */ X X#include "defs.h" X#include "cellbox.h" X#include "tab.h" X Xvoid generate(){ X X X register u_long t1,t2,t3,*tmpptr,y; X cellbox *cptr,*tptr,*cptrup,*cptrdn,*cptrlf,*cptrrt; X X#ifdef PROF X link_called = link_search = 0; X create_called = create_null = 0; X#endif PROF X X cptr = head; X numcells=0; X generations++; X while(cptr ){ X X if(!(cptr->live1 || cptr->live2)){ X cptr = cptr->next; X continue; X } X X cptrup=cptr->up; X cptrdn=cptr->dn; X cptrlf=cptr->lf; X cptrrt=cptr->rt; X X t1=cptr->live1&0xff; X if(t1){ X if(cptrup==NULL){ X cptrup=link(cptr->x,cptr->y - 8); X cptrup->dn=cptr; X } X t2=tab1[t1]; X cptrup->on[7]+=t2; X cptr->on[1]+=t2; X cptr->on[0]+=tab2[t1]; X } X X t1=(cptr->live2 & 0xff000000)>>24; X if(t1){ X if(cptrdn==NULL){ X cptrdn=link(cptr->x,cptr->y + 8); X cptrdn->up=cptr; X } X t2=tab1[t1]; X cptrdn->on[0]+=t2; X cptr->on[6]+=t2; X cptr->on[7]+=tab2[t1]; X } X X t1=cptr->live1; X t2=cptr->live2; X X if(t1 & 0x1010101){ X if(cptrlf==NULL){ X cptrlf=link(cptr->x - 8,cptr->y); X cptrlf->rt=cptr; X } X if(t1 & 0x1){ X cptrlf->on[0]+=0x10000000; X cptrlf->on[1]+=0x10000000; X if(cptrlf->up==NULL){ X cptrlf->up=link(cptr->x - 8,cptr->y - 8); X } X cptrlf->up->on[7]+= 0x10000000; X cptrlf->up->dn=cptrlf; X } X if(t1 & 0x100){ X cptrlf->on[0]+=0x10000000; X cptrlf->on[1]+=0x10000000; X cptrlf->on[2]+=0x10000000; X } X if(t1 & 0x10000){ X cptrlf->on[1]+=0x10000000; X cptrlf->on[2]+=0x10000000; X cptrlf->on[3]+=0x10000000; X } X if(t1 & 0x1000000){ X cptrlf->on[2]+=0x10000000; X cptrlf->on[3]+=0x10000000; X cptrlf->on[4]+=0x10000000; X } X } X X if(t2 & 0x1010101){ X if(cptrlf==NULL){ X cptrlf=link(cptr->x - 8,cptr->y); X cptrlf->rt=cptr; X } X if(t2 & 0x1){ X cptrlf->on[3]+=0x10000000; X cptrlf->on[4]+=0x10000000; X cptrlf->on[5]+=0x10000000; X } X if(t2 & 0x100){ X cptrlf->on[4]+=0x10000000; X cptrlf->on[5]+=0x10000000; X cptrlf->on[6]+=0x10000000; X } X if(t2 & 0x10000){ X cptrlf->on[5]+=0x10000000; X cptrlf->on[6]+=0x10000000; X cptrlf->on[7]+=0x10000000; X } X if(t2 & 0x1000000){ X cptrlf->on[6]+=0x10000000; X cptrlf->on[7]+=0x10000000; X if(cptrlf->dn==NULL){ X cptrlf->dn=link(cptr->x - 8,cptr->y + 8); X } X cptrlf->dn->on[0]+= 0x10000000; X cptrlf->dn->up=cptrlf; X } X } X X if(t1 & 0x80808080){ X if(cptrrt == NULL){ X cptrrt=link(cptr->x + 8,cptr->y); X cptrrt->lf=cptr; X } X if(t1 & 0x80){ X cptrrt->on[0]+=0x1; X cptrrt->on[1]+=0x1; X if(cptrrt->up==NULL){ X cptrrt->up=link(cptr->x + 8,cptr->y - 8); X } X cptrrt->up->on[7]+= 0x1; X cptrrt->up->dn=cptrrt; X } X if(t1 & 0x8000){ X cptrrt->on[0]+=0x1; X cptrrt->on[1]+=0x1; X cptrrt->on[2]+=0x1; X } X if(t1 & 0x800000){ X cptrrt->on[1]+=0x1; X cptrrt->on[2]+=0x1; X cptrrt->on[3]+=0x1; X } X if(t1 & 0x80000000){ X cptrrt->on[2]+=0x1; X cptrrt->on[3]+=0x1; X cptrrt->on[4]+=0x1; X } X } X X if(t2 & 0x80808080){ X if(cptrrt == NULL){ X cptrrt=link(cptr->x + 8,cptr->y); X cptrrt->lf=cptr; X } X if(t2 & 0x80){ X cptrrt->on[3]+=0x1; X cptrrt->on[4]+=0x1; X cptrrt->on[5]+=0x1; X } X if(t2 & 0x8000){ X cptrrt->on[4]+=0x1; X cptrrt->on[5]+=0x1; X cptrrt->on[6]+=0x1; X } X if(t2 & 0x800000){ X cptrrt->on[5]+=0x1; X cptrrt->on[6]+=0x1; X cptrrt->on[7]+=0x1; X } X if(t2 & 0x80000000){ X cptrrt->on[6]+=0x1; X cptrrt->on[7]+=0x1; X if(cptrrt->dn==NULL){ X cptrrt->dn=link(cptr->x + 8,cptr->y + 8); X } X cptrrt->dn->on[0]+= 0x1; X cptrrt->dn->up=cptrrt; X } X } X X t1=(cptr->live1 & 0xff00) >> 8; X t2=(cptr->live1 & 0xff0000) >> 16; X X if(t1){ X t3 = tab1[t1]; X cptr->on[1]+=tab2[t1]; X cptr->on[0]+=t3; X cptr->on[2]+=t3; X } X X t1=(cptr->live1 & 0xff000000) >> 24; X X if(t2){ X t3 = tab1[t2]; X cptr->on[2]+=tab2[t2]; X cptr->on[1]+=t3; X cptr->on[3]+=t3; X } X X t2=(cptr->live2 & 0xff); X X if(t1){ X t3 = tab1[t1]; X cptr->on[3]+=tab2[t1]; X cptr->on[2]+=t3; X cptr->on[4]+=t3; X } X X t1=(cptr->live2 & 0xff00) >> 8; X X if(t2){ X t3 = tab1[t2]; X cptr->on[4]+=tab2[t2]; X cptr->on[3]+=t3; X cptr->on[5]+=t3; X } X X t2=(cptr->live2 & 0xff0000) >> 16; X X if(t1){ X t3 = tab1[t1]; X cptr->on[5]+=tab2[t1]; X cptr->on[4]+=t3; X cptr->on[6]+=t3; X } X X if(t2){ X t3 = tab1[t2]; X cptr->on[6]+=tab2[t2]; X cptr->on[5]+=t3; X cptr->on[7]+=t3; X } X X cptr->up=cptrup; X cptr->dn=cptrdn; X cptr->lf=cptrlf; X cptr->rt=cptrrt; X cptr=cptr->next; X } X X cptr=head; X while(cptr){ X t1=cptr->live1; X cptr->olive1=t1; X tmpptr=cptr->on; X t2=0; X t3= *tmpptr; X if(t3 &0xffff){ X t2=lookup[((t3 & 0xffff)<<4) + (t1&0xf)]; X } X if(t3 &0xffff0000){ X t2|=lookup[((t3 & 0xffff0000)>>12) + ((t1>>4)&0xf)] << 4; X } X *tmpptr=0; X tmpptr++; X t3= *tmpptr; X if(t3 &0xffff){ X t2|=lookup[((t3 & 0xffff)<<4) + ((t1>>8)&0xf)] << 8; X } X if(t3 &0xffff0000){ X t2|=lookup[((t3 & 0xffff0000)>>12) + ((t1>>12)&0xf)] << 12; X } X *tmpptr=0; X tmpptr++; X t3= *tmpptr; X if(t3 &0xffff){ X t2|=lookup[((t3 & 0xffff)<<4) + ((t1>>16)&0xf)] << 16; X } X if(t3 &0xffff0000){ X t2|=lookup[((t3 & 0xffff0000)>>12) + ((t1>>20)&0xf)] << 20; X } X *tmpptr=0; X tmpptr++; X t3= *tmpptr; X if(t3 &0xffff){ X t2|=lookup[((t3 & 0xffff)<<4) + ((t1>>24)&0xf)] << 24; X } X if(t3 &0xffff0000){ X t2|=lookup[((t3 & 0xffff0000)>>12) + ((t1>>28)&0xf)] << 28; X } X *tmpptr=0; X tmpptr++; X t3= *tmpptr; X cptr->live1=t2; X t1=cptr->olive2=cptr->live2; X t2=0; X X if(t3 &0xffff){ X t2=lookup[((t3 & 0xffff)<<4) + (t1&0xf)]; X } X if(t3 &0xffff0000){ X t2|=lookup[((t3 & 0xffff0000)>>12) + ((t1>>4)&0xf)] << 4; X } X *tmpptr=0; X tmpptr++; X t3= *tmpptr; X if(t3 &0xffff){ X t2|=lookup[((t3 & 0xffff)<<4) + ((t1>>8)&0xf)] << 8; X } X if(t3 &0xffff0000){ X t2|=lookup[((t3 & 0xffff0000)>>12) + ((t1>>12)&0xf)] << 12; X } X *tmpptr=0; X tmpptr++; X t3= *tmpptr; X if(t3 &0xffff){ X t2|=lookup[((t3 & 0xffff)<<4) + ((t1>>16)&0xf)] << 16; X } X if(t3 &0xffff0000){ X t2|=lookup[((t3 & 0xffff0000)>>12) + ((t1>>20)&0xf)] << 20; X } X *tmpptr=0; X tmpptr++; X t3= *tmpptr; X if(t3 &0xffff){ X t2|=lookup[((t3 & 0xffff)<<4) + ((t1>>24)&0xf)] << 24; X } X if(t3 &0xffff0000){ X t2|=lookup[((t3 & 0xffff0000)>>12) + ((t1>>28)&0xf)] << 28; X } X *tmpptr=0; X cptr->live2=t2; X X if(dispcells){ X t1=cptr->live1; X for(y=0;y<32;y++) X if(t1 & (1<<y)) numcells++; X t1=cptr->live2; X for(y=0;y<32;y++) X if(t1 & (1<<y)) numcells++; X } X X if(cptr->live1 || cptr->live2){ X cptr->dead=0; X cptr=cptr->next; X } X else{ X cptr->dead++; X if(cptr->dead > maxdead){ X tptr=cptr->next; X kill(cptr); X cptr=tptr; X } X else{ X cptr=cptr->next; X } X } X } X#ifdef PROF X printf("num=%d ",numboxes); X if(link_called){ X printf("l_c=%d ",link_called); X if(link_search){ X printf(" l_ave=%f ",link_search/(float)link_called); X } X } X if(create_called){ X printf("c_c=%d ",create_called); X if(create_null){ X printf(" c_ave=%f ",create_null/(float)create_called); X } X } X X printf("\n"); X#endif PROF X} X X END_OF_xlife-2.0/generate.c if test 8368 -ne `wc -c <xlife-2.0/generate.c`; then echo shar: \"xlife-2.0/generate.c\" unpacked with wrong size! fi # end of overwriting check fi if test -f xlife-2.0/main.c -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"xlife-2.0/main.c\" else echo shar: Extracting \"xlife-2.0/main.c\" \(6984 characters\) sed "s/^X//" >xlife-2.0/main.c <<'END_OF_xlife-2.0/main.c' X/* X * XLife Copyright 1989 Jon Bennett jb7m+@andrew.cmu.edu, jcrb@cs.cmu.edu X * X * Permission to use, copy, modify, distribute, and sell this software and its X * documentation for any purpose is hereby granted without fee, provided that X * the above copyright notice appear in all copies and that both that X * copyright notice and this permission notice appear in supporting X * documentation, and that the name of the copyright holders not be used in X * advertising or publicity pertaining to distribution of the software without X * specific, written prior permission. The copyright holders make no X * representations about the suitability of this software for any purpose. It X * is provided "as is" without express or implied warranty. X * X * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, X * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO X * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR X * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, X * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER X * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR X * PERFORMANCE OF THIS SOFTWARE. X * X * CMU SUCKS X */ X X#include <X11/Xos.h> X X#include "defs.h" X#include "icon.h" X#include "cursor_data.h" X#include "cursor_mask.h" X#include "patchlevel.h" X X#define BORDERWIDTH 2 /* width of window manager borders to assume */ X Xmain(argc, argv) Xint argc; Xchar **argv; X{ X int i; X Pixmap icon,cursor_data,cursor_mask; X XSizeHints hints; X XSetWindowAttributes winat; X XColor white,black,dummy; X XComposeStatus stat; X char *geomstring = NULL; X char *initpat = NULL; X int bwidth = BORDERWIDTH; X struct timeval inputdelay, timeouttemp; X X if (!(disp = XOpenDisplay(getenv("DISPLAY")))) X fatal("Can't open Display\n"); X X for (i = 1; i < argc; i++) X { X if (strcmp(argv[i], "-geometry") == 0) X geomstring = argv[++i]; X else if (*argv[i] == '=') X geomstring = argv[i]; X else if (strcmp(argv[i], "-bw") == 0) X bwidth = atoi(argv[++i]); X else if (*argv[i] != '-') X { X initpat = argv[i]; X break; X } X } X X screen = DefaultScreen(disp); X rootw = RootWindow(disp, screen); X fcolor = WhitePixel(disp, screen); X bcolor = BlackPixel(disp, screen); X X hints.x = 0; X hints.y = 0; X width = DisplayWidth(disp,screen); X height = DisplayHeight(disp,screen); X X hints.width = width - bwidth*2; X hints.height = height - bwidth*2; X X hints.flags = PPosition | PSize; X if (geomstring != NULL) X { X int result; X X result = XParseGeometry(geomstring,&hints.x,&hints.y, X &hints.width,&hints.height); X if (result & XNegative) X hints.x += DisplayWidth(disp,screen) - hints.width - bwidth * 2; X if (result & YNegative) X hints.y += DisplayHeight(disp,screen) - hints.height - bwidth*2; X if (result & XValue || result & YValue) X { X hints.flags |= USPosition; X hints.flags &= ~PPosition; X } X if (result & WidthValue || result & HeightValue) X { X hints.flags |= USSize; X hints.flags &= ~PSize; X } X } X X mainw = XCreateSimpleWindow(disp, rootw, X 0, 0, hints.width, hints.height, BORDERWIDTH, fcolor, bcolor); X X if(!mainw) X fatal("Can't open main window"); X X icon = XCreateBitmapFromData(disp, mainw, icon_bits, icon_width, icon_height); X XSetStandardProperties(disp, mainw, "Xlife: the game of bit manipulation , version 2.0", "Xlife", icon, argv, argc, &hints); X X xgcv.background = bcolor; X xgcv.foreground = bcolor; X blackgc = XCreateGC(disp, mainw, GCForeground | GCBackground, &xgcv); X xgcv.foreground = fcolor; X ntextgc = XCreateGC(disp, mainw, GCForeground | GCBackground, &xgcv); X btextgc = XCreateGC(disp, mainw, GCForeground | GCBackground, &xgcv); X whitegc = XCreateGC(disp, mainw, GCForeground | GCBackground, &xgcv); X X if(!((nfont = XLoadQueryFont(disp, NORMALFONT)) && (bfont = XLoadQueryFont(disp, BOLDFONT)))) X fatal("Can't load font\n"); X XSetFont(disp, ntextgc, nfont->fid); X XSetFont(disp, btextgc, bfont->fid); X xgcv.function = GXcopy; X xgcv.plane_mask = 1; X X XAllocNamedColor(disp, DefaultColormap(disp, screen), "white", &white, &dummy); X XAllocNamedColor(disp, DefaultColormap(disp, screen), "black", &black, &dummy); X cursor_data = XCreateBitmapFromData(disp, mainw, cursor_data_bits, cursor_data_width, cursor_data_height); X cursor_mask = XCreateBitmapFromData(disp, mainw, cursor_mask_bits, cursor_mask_width, cursor_mask_height); X cursor = XCreatePixmapCursor(disp, cursor_data, cursor_mask, &white, &black, cursor_data_x_hot, cursor_data_y_hot); X XDefineCursor(disp, mainw, cursor); X X inputgc = XCreateGC(disp, mainw, GCFunction | GCPlaneMask, &xgcv); X X lifew = XCreateSimpleWindow(disp, mainw, X 0, 0,width , (height - INPUTH), BORDERWIDTH, X fcolor, bcolor); X inputw = XCreateSimpleWindow(disp, mainw, X 0, (height - INPUTH), width, INPUTH, BORDERWIDTH, X fcolor, bcolor); X X winat.win_gravity = SouthGravity; X XChangeWindowAttributes(disp,inputw,CWWinGravity,&winat); X X XSelectInput(disp,mainw, ExposureMask | StructureNotifyMask); X XSelectInput(disp, inputw, KeyPressMask | ExposureMask); X XSelectInput(disp, lifew, KeyPressMask | ButtonPressMask | Button1MotionMask | Button3MotionMask | ExposureMask); X X initcells(); X numcomments=0; X settimeout(0); X xpos = ypos = STARTPOS; X dispcells=0; X scale = 1; X born = 8; X live = 12; X maxdead = 10; X generations = 0; X numboxes = 0; X numcells = 0; X width = hints.width; X height = hints.height; X inputlength = width/FONTWIDTH; X state = STOP; X fname[0]=NULL; X strcpy(loadirbuf,DIR); X X /* the one actual comment :-). only accept one pattern since it is highly X * unlikely that overlaying n patterns is what you want to do X */ X gentab(); X if (initpat != NULL) X do_loadfile(initpat); X X XMapWindow(disp, inputw); X XMapWindow(disp, lifew); X XMapWindow(disp, mainw); X X XFlush(disp); X X for(;;) { X while(XCheckMaskEvent(disp, KeyPressMask | ButtonPressMask | Button1MotionMask | Button3MotionMask | ExposureMask | StructureNotifyMask,&event)){ X switch(event.type) { X case KeyPress: X XLookupString(&event.xkey, keybuf, 16, &ks, &stat); X if (!DoKeySymIn(ks)) X DoKeyIn(keybuf); X break; X case MotionNotify: X Motion(); X break; X case ButtonPress: X Button(); X break; X case ConfigureNotify: X DoResize(); X break; X case Expose: X DoExpose(ClassifyWin(event.xexpose.window)); X default: X break; X } X } X X if ((state == RUN) | (state == HIDE)) { X generate(); X redisplay(); X } else { X inputdelay.tv_sec = 0; X inputdelay.tv_usec = 100000; X (void) select(32,0,0,0,&inputdelay); X } X X if (state== RUN){ X timeouttemp.tv_sec = timeout.tv_sec; X timeouttemp.tv_usec = timeout.tv_usec; X (void) select(32,0,0,0,&timeouttemp); X } X } X} X END_OF_xlife-2.0/main.c if test 6984 -ne `wc -c <xlife-2.0/main.c`; then echo shar: \"xlife-2.0/main.c\" unpacked with wrong size! fi # end of overwriting check fi if test -f xlife-2.0/patterns/blockpusher3.life -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"xlife-2.0/patterns/blockpusher3.life\" else echo shar: Extracting \"xlife-2.0/patterns/blockpusher3.life\" \(9579 characters\) sed "s/^X//" >xlife-2.0/patterns/blockpusher3.life <<'END_OF_xlife-2.0/patterns/blockpusher3.life' X#R X-67 -96 X-66 -96 X 3 -96 X 4 -96 X-67 -95 X-66 -95 X 3 -95 X 4 -95 X-53 -92 X-52 -92 X-11 -92 X-10 -92 X-67 -91 X-53 -91 X-10 -91 X 4 -91 X-68 -90 X-67 -90 X-66 -90 X-55 -90 X-53 -90 X-10 -90 X -8 -90 X 3 -90 X 4 -90 X 5 -90 X-69 -89 X-65 -89 X-55 -89 X-54 -89 X-40 -89 X-39 -89 X-24 -89 X-23 -89 X -9 -89 X -8 -89 X 2 -89 X 6 -89 X-70 -88 X-68 -88 X-67 -88 X-66 -88 X-64 -88 X-40 -88 X-39 -88 X-24 -88 X-23 -88 X 1 -88 X 3 -88 X 4 -88 X 5 -88 X 7 -88 X-69 -87 X-68 -87 X-67 -87 X-66 -87 X-65 -87 X 2 -87 X 3 -87 X 4 -87 X 5 -87 X 6 -87 X-39 -83 X-24 -83 X-64 -82 X-63 -82 X-62 -82 X-41 -82 X-40 -82 X-38 -82 X-37 -82 X-26 -82 X-25 -82 X-23 -82 X-22 -82 X -1 -82 X 0 -82 X 1 -82 X-62 -81 X -1 -81 X-63 -80 X-42 -80 X-36 -80 X-27 -80 X-21 -80 X 0 -80 X-42 -78 X-41 -78 X-39 -78 X-37 -78 X-36 -78 X-27 -78 X-26 -78 X-24 -78 X-22 -78 X-21 -78 X-37 -75 X-26 -75 X-40 -74 X-37 -74 X-26 -74 X-23 -74 X-66 -73 X-65 -73 X-64 -73 X-37 -73 X-26 -73 X 1 -73 X 2 -73 X 3 -73 X-67 -72 X-63 -72 X-41 -72 X-40 -72 X-23 -72 X-22 -72 X 0 -72 X 4 -72 X-68 -71 X-62 -71 X-45 -71 X-41 -71 X-22 -71 X-18 -71 X -1 -71 X 5 -71 X-68 -70 X-67 -70 X-65 -70 X-63 -70 X-62 -70 X-46 -70 X-45 -70 X-41 -70 X-39 -70 X-24 -70 X-22 -70 X-18 -70 X-17 -70 X -1 -70 X 0 -70 X 2 -70 X 4 -70 X 5 -70 X-46 -69 X-44 -69 X-40 -69 X-39 -69 X-24 -69 X-23 -69 X-19 -69 X-17 -69 X-65 -67 X 2 -67 X-66 -66 X-64 -66 X-40 -66 X-39 -66 X-35 -66 X-34 -66 X-29 -66 X-28 -66 X-24 -66 X-23 -66 X 1 -66 X 3 -66 X-66 -65 X-64 -65 X-40 -65 X-34 -65 X-29 -65 X-23 -65 X 1 -65 X 3 -65 X-66 -64 X-65 -64 X 2 -64 X 3 -64 X-67 -63 X-39 -63 X-35 -63 X-28 -63 X-24 -63 X 4 -63 X-68 -62 X-67 -62 X-66 -62 X-38 -62 X-37 -62 X-36 -62 X-27 -62 X-26 -62 X-25 -62 X 3 -62 X 4 -62 X 5 -62 X-69 -61 X-65 -61 X 2 -61 X 6 -61 X-70 -60 X-68 -60 X-67 -60 X-66 -60 X-64 -60 X 1 -60 X 3 -60 X 4 -60 X 5 -60 X 7 -60 X-69 -59 X-68 -59 X-67 -59 X-66 -59 X-65 -59 X-60 -59 X -3 -59 X 2 -59 X 3 -59 X 4 -59 X 5 -59 X 6 -59 X-59 -58 X-58 -58 X -5 -58 X -4 -58 X-60 -57 X-59 -57 X-54 -57 X-40 -57 X-39 -57 X-24 -57 X-23 -57 X -9 -57 X -4 -57 X -3 -57 X-55 -56 X-39 -56 X-24 -56 X -8 -56 X-55 -55 X-54 -55 X-53 -55 X-42 -55 X-41 -55 X-40 -55 X-23 -55 X-22 -55 X-21 -55 X-10 -55 X -9 -55 X -8 -55 X-42 -54 X-37 -54 X-36 -54 X-21 -54 X-16 -54 X-15 -54 X-36 -53 X-16 -53 X-36 -52 X-34 -52 X-23 -52 X-18 -52 X-16 -52 X-53 -51 X-51 -51 X-35 -51 X-34 -51 X-24 -51 X-23 -51 X-22 -51 X-21 -51 X-19 -51 X-18 -51 X-17 -51 X-12 -51 X-10 -51 X-52 -50 X-51 -50 X-25 -50 X-24 -50 X-22 -50 X-20 -50 X-19 -50 X-12 -50 X-11 -50 X-52 -49 X-26 -49 X-25 -49 X-24 -49 X-22 -49 X-19 -49 X-11 -49 X-67 -48 X-66 -48 X-25 -48 X-24 -48 X-22 -48 X-20 -48 X 3 -48 X 4 -48 X-67 -47 X-66 -47 X-24 -47 X-23 -47 X-22 -47 X-21 -47 X 3 -47 X 4 -47 X-23 -46 X-15 -41 X-14 -41 X-14 -40 X-14 -39 X-12 -39 X-11 -39 X -5 -39 X -4 -39 X-13 -38 X -5 -38 X -3 -38 X -9 -37 X -4 -37 X -3 -37 X -2 -37 X 6 -37 X 7 -37 X-11 -36 X -8 -36 X -3 -36 X -2 -36 X -1 -36 X 6 -36 X 7 -36 X-10 -35 X -9 -35 X -4 -35 X -3 -35 X -2 -35 X-48 -34 X-47 -34 X-46 -34 X -5 -34 X -3 -34 X-46 -33 X -5 -33 X -4 -33 X-47 -32 X-17 -31 X-15 -31 X 50 -31 X 51 -31 X-16 -30 X-15 -30 X 50 -30 X 51 -30 X-39 -29 X-38 -29 X-16 -29 X 42 -29 X 43 -29 X-38 -28 X-32 -28 X-31 -28 X 42 -28 X-41 -27 X-40 -27 X-39 -27 X-32 -27 X-31 -27 X 30 -27 X 32 -27 X 40 -27 X 42 -27 X-41 -26 X 28 -26 X 32 -26 X 40 -26 X 41 -26 X 50 -26 X-20 -25 X 21 -25 X 22 -25 X 28 -25 X 49 -25 X 50 -25 X 51 -25 X-19 -24 X-18 -24 X 21 -24 X 22 -24 X 27 -24 X 32 -24 X 48 -24 X 52 -24 X-20 -23 X-19 -23 X 28 -23 X 47 -23 X 49 -23 X 50 -23 X 51 -23 X 53 -23 X 28 -22 X 32 -22 X 48 -22 X 49 -22 X 50 -22 X 51 -22 X 52 -22 X-38 -21 X 4 -21 X 30 -21 X 32 -21 X-40 -20 X-39 -20 X-38 -20 X 2 -20 X 4 -20 X-79 -19 X-41 -19 X-28 -19 X 3 -19 X 4 -19 X-80 -18 X-79 -18 X-41 -18 X-40 -18 X-28 -18 X-27 -18 X-29 -17 X-27 -17 X 47 -16 X 46 -15 X 47 -15 X-18 -14 X 46 -14 X 48 -14 X-31 -13 X-30 -13 X-29 -13 X-18 -13 X-17 -13 X-16 -13 X 21 -13 X 22 -13 X-81 -12 X-80 -12 X-79 -12 X-50 -12 X-49 -12 X-31 -12 X-15 -12 X 21 -12 X 52 -12 X 53 -12 X-82 -11 X-81 -11 X-79 -11 X-78 -11 X-50 -11 X-49 -11 X-36 -11 X-35 -11 X-30 -11 X-16 -11 X-15 -11 X 19 -11 X 21 -11 X 52 -11 X-82 -10 X-81 -10 X-79 -10 X-78 -10 X-35 -10 X-34 -10 X 19 -10 X 20 -10 X 53 -10 X 54 -10 X 55 -10 X-82 -9 X-81 -9 X-80 -9 X-79 -9 X-78 -9 X-45 -9 X-44 -9 X-43 -9 X-42 -9 X-41 -9 X-36 -9 X 55 -9 X-83 -8 X-82 -8 X-78 -8 X-77 -8 X-46 -8 X-44 -8 X-43 -8 X-42 -8 X-40 -8 X 67 -8 X 68 -8 X-45 -7 X-41 -7 X 67 -7 X-44 -6 X-43 -6 X-42 -6 X-14 -6 X-13 -6 X-12 -6 X 54 -6 X 65 -6 X 67 -6 X 79 -6 X 80 -6 X-43 -5 X-15 -5 X-11 -5 X 53 -5 X 55 -5 X 65 -5 X 66 -5 X 79 -5 X 80 -5 X-78 -4 X-77 -4 X-76 -4 X-53 -4 X-47 -4 X-42 -4 X-41 -4 X 46 -4 X 47 -4 X 51 -4 X 52 -4 X 56 -4 X-76 -3 X-53 -3 X-47 -3 X-42 -3 X-40 -3 X-16 -3 X-10 -3 X 46 -3 X 47 -3 X 51 -3 X 52 -3 X 56 -3 X-77 -2 X-52 -2 X-48 -2 X-42 -2 X-40 -2 X-16 -2 X-15 -2 X-11 -2 X-10 -2 X 51 -2 X 52 -2 X 56 -2 X-51 -1 X-50 -1 X-49 -1 X-41 -1 X 13 -1 X 15 -1 X 53 -1 X 55 -1 X 14 0 X 15 0 X 54 0 X-55 1 X-54 1 X-22 1 X-20 1 X-16 1 X-15 1 X 14 1 X-56 2 X-55 2 X-44 2 X-43 2 X-41 2 X-39 2 X-38 2 X-22 2 X-21 2 X-17 2 X-15 2 X-54 3 X-44 3 X-38 3 X-21 3 X-17 3 X 78 3 X 79 3 X 80 3 X-43 4 X-39 4 X-17 4 X-16 4 X 71 4 X 77 4 X 81 4 X-42 5 X-41 5 X-40 5 X-13 5 X 10 5 X 70 5 X 71 5 X 76 5 X 82 5 X-79 6 X-78 6 X-77 6 X-16 6 X-13 6 X 11 6 X 12 6 X 70 6 X 72 6 X 76 6 X 77 6 X 79 6 X 81 6 X 82 6 X-80 7 X-76 7 X-13 7 X 10 7 X 11 7 X-81 8 X-75 8 X-80 9 X-76 9 X-52 9 X -2 9 X -1 9 X 79 9 X-79 10 X-78 10 X-77 10 X-53 10 X-52 10 X-51 10 X-18 10 X-17 10 X-15 10 X-13 10 X-12 10 X -1 10 X 0 10 X 78 10 X 80 10 X-79 11 X-78 11 X-77 11 X-53 11 X-52 11 X-51 11 X -2 11 X 78 11 X 80 11 X-39 12 X-18 12 X-12 12 X 79 12 X 80 12 X 81 12 X-68 13 X-67 13 X-66 13 X-55 13 X-54 13 X-50 13 X-49 13 X-38 13 X 81 13 X 82 13 X-66 14 X-55 14 X-54 14 X-50 14 X-49 14 X-40 14 X-39 14 X-38 14 X-17 14 X-16 14 X-14 14 X-13 14 X 81 14 X-67 15 X-15 15 X 82 15 X 83 15 X 84 15 X-81 16 X-80 16 X-79 16 X 18 16 X 19 16 X 20 16 X 84 16 X-82 17 X-81 17 X-79 17 X-78 17 X 20 17 X-82 18 X-81 18 X-79 18 X-78 18 X-18 18 X-17 18 X 19 18 X-82 19 X-81 19 X-80 19 X-79 19 X-78 19 X-45 19 X-44 19 X-43 19 X-42 19 X-41 19 X-17 19 X-83 20 X-82 20 X-78 20 X-77 20 X-46 20 X-44 20 X-43 20 X-42 20 X-40 20 X-20 20 X-19 20 X-18 20 X-45 21 X-41 21 X-31 21 X-30 21 X-20 21 X-53 22 X-52 22 X-44 22 X-43 22 X-42 22 X-31 22 X-29 22 X 39 22 X-68 23 X-67 23 X-53 23 X-43 23 X-29 23 X 39 23 X 41 23 X-68 24 X-66 24 X-29 24 X-28 24 X -7 24 X -6 24 X 39 24 X 40 24 X-66 25 X-41 25 X-40 25 X -7 25 X -6 25 X-66 26 X-65 26 X-41 26 X-52 27 X-50 27 X-40 27 X-39 27 X-38 27 X-54 28 X-50 28 X-38 28 X-80 29 X-79 29 X-62 29 X-54 29 X-79 30 X-63 30 X-62 30 X-61 30 X-60 30 X-55 30 X-50 30 X -8 30 X -7 30 X -6 30 X-64 31 X-63 31 X-61 31 X-59 31 X-54 31 X -8 31 X -7 31 X -6 31 X-75 32 X-74 32 X-65 32 X-64 32 X-63 32 X-61 32 X-58 32 X-54 32 X-50 32 X-43 32 X-42 32 X -9 32 X -5 32 X-75 33 X-74 33 X-64 33 X-63 33 X-61 33 X-59 33 X-52 33 X-50 33 X-43 33 X-41 33 X-63 34 X-62 34 X-61 34 X-60 34 X-41 34 X-10 34 X -9 34 X -5 34 X -4 34 X-62 35 X-41 35 X-40 35 X-51 36 X 52 36 X 53 36 X 54 36 X-53 37 X-51 37 X 54 37 X-52 38 X-51 38 X -4 38 X -3 38 X 53 38 X-32 39 X-31 39 X -5 39 X -3 39 X 1 39 X-31 40 X-30 40 X -3 40 X 0 40 X 1 40 X-32 41 X 0 41 X 2 41 X-60 42 X-62 43 X-61 43 X -3 43 X-61 44 X-60 44 X-78 45 X-78 46 X-77 46 X-76 46 X-75 47 X-38 47 X-76 48 X-75 48 X-40 48 X-39 48 X-38 48 X -6 48 X -5 48 X -4 48 X 57 48 X 58 48 X-41 49 X -7 49 X -3 49 X 32 49 X 33 49 X 57 49 X 58 49 X-73 50 X-72 50 X-41 50 X-40 50 X -8 50 X -2 50 X 32 50 X-73 51 X-71 51 X -8 51 X -2 51 X 21 51 X 22 51 X 30 51 X 32 51 X-73 52 X -5 52 X 21 52 X 24 52 X 30 52 X 31 52 X -7 53 X -3 53 X 11 53 X 15 53 X 16 53 X 17 53 X 25 53 X-47 54 X-46 54 X -4 54 X 10 54 X 11 54 X 12 54 X 13 54 X 14 54 X 18 54 X 25 54 X-59 55 X-57 55 X-46 55 X-45 55 X -8 55 X -5 55 X 9 55 X 10 55 X 12 55 X 13 55 X 17 55 X 25 55 X-64 56 X-63 56 X-59 56 X-56 56 X-47 56 X -8 56 X -2 56 X -1 56 X 8 56 X 9 56 X 10 56 X 12 56 X 13 56 X 17 56 X 21 56 X 24 56 X-71 57 X-70 57 X-67 57 X-66 57 X-64 57 X-63 57 X-62 57 X-56 57 X-55 57 X-43 57 X-42 57 X -7 57 X -2 57 X -1 57 X 9 57 X 10 57 X 12 57 X 13 57 X 14 57 X 15 57 X 21 57 X 22 57 X-72 58 X-70 58 X-66 58 X-62 58 X-58 58 X-54 58 X-53 58 X-44 58 X-42 58 X-10 58 X -9 58 X -8 58 X 10 58 X 11 58 X 12 58 X 13 58 X-82 59 X-81 59 X-73 59 X-64 59 X-62 59 X-56 59 X-55 59 X-45 59 X-38 59 X-37 59 X-34 59 X-33 59 X-10 59 X 11 59 X-82 60 X-81 60 X-73 60 X-70 60 X-63 60 X-62 60 X-59 60 X-56 60 X-45 60 X-42 60 X-39 60 X-36 60 X-34 60 X-33 60 X-73 61 X-59 61 X-57 61 X-45 61 X-38 61 X-37 61 X -3 61 X-72 62 X-70 62 X-44 62 X-42 62 X -6 62 X -5 62 X -4 62 X -3 62 X 2 62 X-71 63 X-70 63 X-43 63 X-42 63 X-15 63 X -7 63 X -6 63 X -5 63 X -4 63 X 2 63 X-16 64 X-14 64 X -7 64 X -4 64 X 6 64 X 7 64 X-17 65 X-13 65 X-12 65 X -7 65 X -6 65 X -5 65 X -4 65 X 6 65 X 7 65 X-28 66 X-27 66 X-17 66 X-13 66 X-12 66 X -6 66 X -5 66 X -4 66 X -3 66 X 22 66 X 23 66 X 24 66 X-28 67 X-27 67 X-17 67 X-13 67 X-12 67 X -3 67 X 24 67 X-16 68 X-14 68 X 23 68 X-15 69 X -6 70 X -4 70 X -5 71 X -4 71 X -5 72 X 2 77 X 3 78 X 4 78 X-31 79 X 2 79 X 3 79 X-31 80 X-30 80 X-29 80 X-28 81 X-29 82 X-28 82 X-21 83 X-25 84 X-22 84 X-26 85 X-25 85 X-22 85 X-21 85 X-20 85 X-26 86 X-24 86 X 0 88 X 1 88 X-12 89 X-11 89 X -1 89 X 1 89 X-19 90 X-17 90 X-16 90 X-12 90 X-11 90 X-10 90 X 1 90 X-23 91 X-20 91 X-16 91 X-10 91 X -9 91 X -7 91 X 5 91 X-24 92 X-23 92 X-20 92 X-15 92 X-10 92 X -7 92 X 4 92 X 5 92 X-35 93 X-34 93 X-25 93 X-24 93 X-18 93 X-17 93 X-16 93 X-15 93 X-10 93 X -9 93 X -7 93 X 3 93 X 4 93 X 9 93 X 10 93 X 13 93 X 14 93 X-35 94 X-34 94 X-26 94 X-25 94 X-24 94 X-16 94 X-12 94 X-11 94 X-10 94 X 2 94 X 3 94 X 4 94 X 9 94 X 10 94 X 13 94 X 14 94 X-25 95 X-24 95 X-12 95 X-11 95 X 3 95 X 4 95 X 9 95 X 10 95 X-24 96 X-23 96 X 4 96 X 5 96 X-23 97 X 5 97 END_OF_xlife-2.0/patterns/blockpusher3.life if test 9579 -ne `wc -c <xlife-2.0/patterns/blockpusher3.life`; then echo shar: \"xlife-2.0/patterns/blockpusher3.life\" unpacked with wrong size! fi # end of overwriting check fi if test -f xlife-2.0/patterns/oscillator7.life -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"xlife-2.0/patterns/oscillator7.life\" else echo shar: Extracting \"xlife-2.0/patterns/oscillator7.life\" \(76 characters\) sed "s/^X//" >xlife-2.0/patterns/oscillator7.life <<'END_OF_xlife-2.0/patterns/oscillator7.life' X.....****....****. X**.......*.......* X**..**...*..**...* X....**..*...**..*. END_OF_xlife-2.0/patterns/oscillator7.life if test 76 -ne `wc -c <xlife-2.0/patterns/oscillator7.life`; then echo shar: \"xlife-2.0/patterns/oscillator7.life\" unpacked with wrong size! fi # end of overwriting check fi if test -f xlife-2.0/patterns/rakecollision.life -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"xlife-2.0/patterns/rakecollision.life\" else echo shar: Extracting \"xlife-2.0/patterns/rakecollision.life\" \(8875 characters\) sed "s/^X//" >xlife-2.0/patterns/rakecollision.life <<'END_OF_xlife-2.0/patterns/rakecollision.life' X#A X538 186 X539 186 X456 211 X456 209 X456 210 X456 195 X456 193 X456 194 X552 204 X552 205 X553 205 X552 206 X552 198 X552 199 X553 199 X552 200 X360 418 X361 418 X552 211 X553 212 X553 213 X552 214 X553 214 X552 190 X553 190 X553 191 X553 192 X552 193 X375 401 X374 402 X375 402 X192 312 X192 313 X193 313 X193 314 X184 304 X184 305 X185 305 X185 306 X176 296 X176 297 X177 297 X177 298 X168 288 X168 289 X169 289 X169 290 X160 280 X160 281 X161 281 X161 282 X152 272 X152 273 X153 273 X153 274 X144 264 X144 265 X145 265 X145 266 X136 256 X136 257 X137 257 X137 258 X128 248 X128 249 X129 249 X129 250 X120 240 X120 241 X121 241 X121 242 X112 232 X112 233 X113 233 X113 234 X104 224 X104 225 X105 225 X105 226 X96 216 X96 217 X97 217 X97 218 X88 208 X88 209 X89 209 X89 210 X80 200 X80 201 X81 201 X81 202 X72 192 X72 193 X73 193 X73 194 X64 184 X64 185 X65 185 X65 186 X56 176 X56 177 X57 177 X57 178 X48 168 X48 169 X49 169 X49 170 X40 160 X40 161 X41 161 X41 162 X32 152 X32 153 X33 153 X33 154 X24 144 X24 145 X25 145 X25 146 X16 136 X16 137 X17 137 X17 138 X8 128 X8 129 X9 129 X9 130 X0 120 X0 121 X1 121 X1 122 X-8 112 X-8 113 X-7 113 X-7 114 X-16 104 X-16 105 X-15 105 X-15 106 X-24 96 X-24 97 X-23 97 X-23 98 X-32 88 X-32 89 X-31 89 X-31 90 X-40 80 X-40 81 X-39 81 X-39 82 X-48 72 X-48 73 X-47 73 X-47 74 X-56 64 X-56 65 X-55 65 X-55 66 X-64 56 X-64 57 X-63 57 X-63 58 X-72 48 X-72 49 X-71 49 X-71 50 X-80 40 X-80 41 X-79 41 X-79 42 X-88 32 X-88 33 X-87 33 X-87 34 X-96 24 X-96 25 X-95 25 X-95 26 X-104 16 X-104 17 X-103 17 X-103 18 X-112 8 X-112 9 X-111 9 X-111 10 X-120 0 X-120 1 X-119 1 X-119 2 X-128 -8 X-128 -7 X-127 -7 X-127 -6 X-136 -16 X-136 -15 X-135 -15 X-135 -14 X-152 -32 X-152 -31 X-151 -31 X-151 -30 X510 219 X510 220 X511 220 X511 221 X462 235 X462 236 X463 236 X463 237 X414 251 X414 252 X415 252 X415 253 X366 267 X366 268 X367 268 X367 269 X318 283 X318 284 X319 284 X319 285 X270 299 X270 300 X271 300 X271 301 X222 315 X222 316 X223 316 X223 317 X246 307 X246 308 X247 308 X247 309 X294 291 X294 292 X295 292 X295 293 X342 275 X342 276 X343 276 X343 277 X390 259 X390 260 X391 260 X391 261 X438 243 X438 244 X439 244 X439 245 X486 227 X486 228 X487 228 X487 229 X385 445 X386 446 X386 447 X384 448 X385 448 X386 448 X-137 -33 X-138 -32 X-137 -32 X-138 -31 X-113 -25 X-114 -24 X-113 -24 X-114 -23 X-89 -17 X-90 -16 X-89 -16 X-90 -15 X-65 -9 X-66 -8 X-65 -8 X-66 -7 X-41 -1 X-42 0 X-41 0 X-42 1 X-17 7 X-18 8 X-17 8 X-18 9 X7 15 X6 16 X7 16 X6 17 X31 23 X30 24 X31 24 X30 25 X55 31 X54 32 X55 32 X54 33 X79 39 X78 40 X79 40 X78 41 X103 47 X102 48 X103 48 X102 49 X127 55 X126 56 X127 56 X126 57 X151 63 X150 64 X151 64 X150 65 X175 71 X174 72 X175 72 X174 73 X199 79 X198 80 X199 80 X198 81 X223 87 X222 88 X223 88 X222 89 X247 95 X246 96 X247 96 X246 97 X271 103 X270 104 X271 104 X270 105 X295 111 X294 112 X295 112 X294 113 X319 119 X318 120 X319 120 X318 121 X343 127 X342 128 X343 128 X342 129 X367 135 X366 136 X367 136 X366 137 X391 143 X390 144 X391 144 X390 145 X415 151 X414 152 X415 152 X414 153 X439 159 X438 160 X439 160 X438 161 X463 167 X462 168 X463 168 X462 169 X487 175 X486 176 X487 176 X486 177 X511 183 X510 184 X511 184 X510 185 X-144 -24 X-144 -23 X-143 -23 X-143 -22 X361 403 X362 403 X360 404 X362 404 X363 404 X360 405 X361 405 X362 405 X360 406 X361 406 X360 419 X361 419 X362 419 X360 420 X362 420 X363 420 X361 421 X362 421 X512 219 X464 235 X416 251 X368 267 X320 283 X272 299 X224 315 X248 307 X296 291 X344 275 X392 259 X440 243 X488 227 X-145 -22 X-137 -14 X-129 -6 X-121 2 X-113 10 X-105 18 X-97 26 X-89 34 X-81 42 X-73 50 X-65 58 X-57 66 X-49 74 X-41 82 X-33 90 X-25 98 X-17 106 X-9 114 X-1 122 X7 130 X15 138 X23 146 X31 154 X39 162 X47 170 X55 178 X63 186 X71 194 X79 202 X87 210 X95 218 X103 226 X111 234 X119 242 X127 250 X135 258 X143 266 X151 274 X159 282 X167 290 X175 298 X191 314 X183 306 X457 411 X458 411 X457 413 X458 413 X457 414 X459 414 X459 415 X457 416 X458 416 X459 416 X457 408 X458 408 X459 408 X459 409 X457 410 X459 410 X376 400 X376 401 X377 401 X378 401 X376 402 X377 402 X378 402 X458 422 X459 422 X456 423 X457 423 X459 423 X460 423 X456 424 X457 424 X458 424 X459 424 X456 425 X457 425 X458 425 X456 399 X457 399 X458 399 X456 400 X457 400 X458 400 X459 400 X456 401 X457 401 X459 401 X460 401 X458 402 X459 402 X498 194 X499 194 X512 185 X488 177 X464 169 X440 161 X416 153 X392 145 X368 137 X344 129 X320 121 X296 113 X272 105 X248 97 X224 89 X200 81 X176 73 X152 65 X128 57 X104 49 X80 41 X56 33 X32 25 X8 17 X-16 9 X-40 1 X-64 -7 X-88 -15 X-112 -23 X-136 -31 X372 419 X373 419 X374 419 X373 421 X374 421 X374 422 X375 422 X375 423 X399 415 X399 409 X410 391 X411 391 X410 392 X412 392 X410 393 X386 383 X387 383 X386 384 X388 384 X386 385 X362 375 X363 375 X362 376 X364 376 X362 377 X338 367 X339 367 X338 368 X340 368 X338 369 X314 359 X315 359 X314 360 X316 360 X314 361 X290 351 X291 351 X290 352 X292 352 X290 353 X266 343 X267 343 X266 344 X268 344 X266 345 X242 335 X243 335 X242 336 X244 336 X242 337 X218 327 X219 327 X218 328 X220 328 X218 329 X199 322 X419 420 X420 420 X421 420 X418 421 X419 421 X420 421 X421 421 X422 421 X418 422 X419 422 X420 422 X422 422 X423 422 X421 423 X422 423 X452 195 X453 195 X454 195 X455 195 X546 195 X548 195 X549 196 X549 197 X550 197 X551 197 X550 198 X550 199 X544 200 X551 200 X551 201 X551 203 X544 204 X551 204 X550 205 X550 206 X549 207 X550 207 X551 207 X549 208 X546 209 X548 209 X547 210 X550 210 X548 190 X549 190 X550 190 X551 190 X547 191 X547 194 X550 194 X547 213 X548 214 X549 214 X550 214 X551 214 X383 444 X381 445 X381 447 X382 448 X383 448 X410 431 X410 432 X412 432 X410 433 X411 433 X386 439 X386 440 X388 440 X386 441 X387 441 X358 419 X359 419 X358 420 X359 420 X455 405 X452 407 X453 407 X454 407 X452 408 X454 408 X452 409 X454 409 X453 410 X453 414 X452 415 X454 415 X452 416 X454 416 X452 417 X453 417 X454 417 X451 212 X455 212 X453 213 X448 398 X448 399 X449 399 X455 399 X448 400 X454 400 X455 400 X454 401 X455 401 X455 419 X454 423 X455 423 X448 424 X454 424 X455 424 X448 425 X449 425 X455 425 X448 426 X453 191 X451 192 X455 192 X451 194 X511 212 X511 214 X511 190 X511 192 X452 209 X453 209 X454 209 X455 209 X451 210 X537 203 X539 203 X541 203 X537 204 X542 204 X543 204 X540 205 X538 206 X539 206 X540 206 X538 207 X536 208 X536 196 X538 197 X538 198 X539 198 X540 198 X540 199 X537 200 X542 200 X543 200 X537 201 X539 201 X541 201 X537 214 X538 214 X539 214 X540 214 X541 214 X542 214 X536 215 X542 215 X542 216 X536 217 X541 217 X538 218 X539 218 X536 187 X541 187 X542 188 X536 189 X542 189 X537 190 X538 190 X539 190 X540 190 X541 190 X542 190 X200 320 X200 321 X201 321 X201 322 X-153 -30 X444 414 X443 415 X444 415 X440 405 X441 405 X443 409 X444 409 X444 410 X440 419 X441 419 X444 423 X445 423 X446 423 X447 423 X443 424 X444 424 X445 424 X446 424 X447 424 X443 425 X444 425 X445 425 X446 425 X447 426 X447 398 X443 399 X444 399 X445 399 X446 399 X443 400 X444 400 X445 400 X446 400 X447 400 X444 401 X445 401 X446 401 X447 401 X533 198 X535 198 X533 199 X534 199 X534 200 X535 200 X534 204 X535 204 X533 205 X534 205 X533 206 X535 206 X533 210 X535 210 X377 420 X379 420 X376 422 X377 422 X378 422 X376 423 X377 423 X378 423 X376 424 X533 192 X534 192 X532 193 X534 193 X535 193 X533 194 X535 194 X532 211 X534 211 X535 211 X533 212 X534 212 X436 407 X434 408 X436 408 X433 409 X434 410 X437 410 X438 410 X439 410 X435 411 X436 411 X437 411 X438 411 X439 411 X435 413 X436 413 X437 413 X438 413 X439 413 X434 414 X437 414 X438 414 X439 414 X433 415 X434 416 X436 416 X436 417 X434 399 X435 399 X434 400 X436 400 X434 401 X434 423 X434 424 X436 424 X434 425 X435 425 X525 204 X526 204 X525 205 X526 205 X525 199 X526 199 X525 200 X526 200 X427 414 X428 414 X427 415 X428 415 X427 409 X428 409 X427 410 X428 410 X516 197 X517 197 X515 198 X518 198 X515 199 X517 199 X516 200 X516 204 X515 205 X517 205 X515 206 X518 206 X516 207 X517 207 X513 189 X515 190 X516 191 X516 192 X512 193 X513 193 X514 193 X515 193 X516 193 X512 211 X513 211 X514 211 X515 211 X516 211 X516 212 X516 213 X515 214 X513 215 X418 403 X419 403 X420 403 X421 403 X422 403 X419 404 X420 404 X421 404 X418 406 X419 406 X417 407 X420 407 X416 408 X417 408 X419 408 X420 408 X417 409 X419 409 X418 410 X418 414 X417 415 X419 415 X416 416 X417 416 X419 416 X420 416 X417 417 X420 417 X418 418 X419 418 X421 401 X422 401 X418 402 X419 402 X420 402 X422 402 X423 402 X504 203 X505 203 X506 204 X509 204 X510 204 X509 205 X510 205 X504 206 X505 206 X506 206 X504 198 X505 198 X506 198 X509 199 X510 199 X506 200 X509 200 X510 200 X504 201 X505 201 X411 414 X412 414 X411 415 X412 415 X411 409 X412 409 X411 410 X412 410 X497 195 X498 195 X499 195 X500 195 X497 196 X498 196 X500 196 X501 196 X500 197 X496 198 X498 198 X499 198 X496 199 X497 199 X498 199 X499 199 X503 199 X497 200 X503 200 X497 204 X503 204 X496 205 X497 205 X498 205 X499 205 X503 205 X496 206 X498 206 X499 206 X500 207 X497 208 X498 208 X500 208 X501 208 X497 209 X498 209 X499 209 X500 209 X498 210 X499 210 X400 408 X401 408 X402 409 X400 410 X401 410 X400 414 X401 414 X402 415 X400 416 X401 416 X493 203 X494 203 X494 204 X489 205 X490 205 X493 205 X494 205 X488 206 X489 206 X491 206 X495 206 X489 207 X490 207 X491 207 X490 208 X490 196 X489 197 X490 197 X491 197 X488 198 X489 198 X491 198 X495 198 X489 199 X490 199 X493 199 X494 199 X494 200 X493 201 X494 201 X482 198 X483 198 X481 199 X484 199 X482 200 X483 200 X482 204 X483 204 X481 205 X484 205 X482 206 X483 206 X387 409 X388 409 X387 410 X388 410 X387 414 X388 414 X387 415 X388 415 X377 414 X378 414 X379 414 X380 414 X381 414 X376 415 X380 416 X380 417 X377 404 X379 404 X380 407 X380 408 X376 409 X377 410 X378 410 X379 410 X380 410 X381 410 X469 199 X470 199 X469 200 X470 200 X469 204 X470 204 X469 205 X470 205 X373 403 X374 403 X372 405 X373 405 X374 405 X372 406 X373 406 X375 406 X372 407 X373 407 X375 407 X372 417 X373 417 X375 417 X372 418 X373 418 X375 418 X358 404 X359 404 X358 405 X359 405 X359 406 X359 418 END_OF_xlife-2.0/patterns/rakecollision.life if test 8875 -ne `wc -c <xlife-2.0/patterns/rakecollision.life`; then echo shar: \"xlife-2.0/patterns/rakecollision.life\" unpacked with wrong size! fi # end of overwriting check fi if test -f xlife-2.0/tab.h -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"xlife-2.0/tab.h\" else echo shar: Extracting \"xlife-2.0/tab.h\" \(7406 characters\) sed "s/^X//" >xlife-2.0/tab.h <<'END_OF_xlife-2.0/tab.h' X/* X * XLife Copyright 1989 Jon Bennett jb7m+@andrew.cmu.edu, jcrb@cs.cmu.edu X * X * Permission to use, copy, modify, distribute, and sell this software and its X * documentation for any purpose is hereby granted without fee, provided that X * the above copyright notice appear in all copies and that both that X * copyright notice and this permission notice appear in supporting X * documentation, and that the name of the copyright holders not be used in X * advertising or publicity pertaining to distribution of the software without X * specific, written prior permission. The copyright holders make no X * representations about the suitability of this software for any purpose. It X * is provided "as is" without express or implied warranty. X * X * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, X * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO X * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR X * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, X * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER X * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR X * PERFORMANCE OF THIS SOFTWARE. X */ X Xint tab1[]={ X0x00000000, X0x00000011, X0x00000111, X0x00000122, X0x00001110, X0x00001121, X0x00001221, X0x00001232, X0x00011100, X0x00011111, X0x00011211, X0x00011222, X0x00012210, X0x00012221, X0x00012321, X0x00012332, X0x00111000, X0x00111011, X0x00111111, X0x00111122, X0x00112110, X0x00112121, X0x00112221, X0x00112232, X0x00122100, X0x00122111, X0x00122211, X0x00122222, X0x00123210, X0x00123221, X0x00123321, X0x00123332, X0x01110000, X0x01110011, X0x01110111, X0x01110122, X0x01111110, X0x01111121, X0x01111221, X0x01111232, X0x01121100, X0x01121111, X0x01121211, X0x01121222, X0x01122210, X0x01122221, X0x01122321, X0x01122332, X0x01221000, X0x01221011, X0x01221111, X0x01221122, X0x01222110, X0x01222121, X0x01222221, X0x01222232, X0x01232100, X0x01232111, X0x01232211, X0x01232222, X0x01233210, X0x01233221, X0x01233321, X0x01233332, X0x11100000, X0x11100011, X0x11100111, X0x11100122, X0x11101110, X0x11101121, X0x11101221, X0x11101232, X0x11111100, X0x11111111, X0x11111211, X0x11111222, X0x11112210, X0x11112221, X0x11112321, X0x11112332, X0x11211000, X0x11211011, X0x11211111, X0x11211122, X0x11212110, X0x11212121, X0x11212221, X0x11212232, X0x11222100, X0x11222111, X0x11222211, X0x11222222, X0x11223210, X0x11223221, X0x11223321, X0x11223332, X0x12210000, X0x12210011, X0x12210111, X0x12210122, X0x12211110, X0x12211121, X0x12211221, X0x12211232, X0x12221100, X0x12221111, X0x12221211, X0x12221222, X0x12222210, X0x12222221, X0x12222321, X0x12222332, X0x12321000, X0x12321011, X0x12321111, X0x12321122, X0x12322110, X0x12322121, X0x12322221, X0x12322232, X0x12332100, X0x12332111, X0x12332211, X0x12332222, X0x12333210, X0x12333221, X0x12333321, X0x12333332, X0x11000000, X0x11000011, X0x11000111, X0x11000122, X0x11001110, X0x11001121, X0x11001221, X0x11001232, X0x11011100, X0x11011111, X0x11011211, X0x11011222, X0x11012210, X0x11012221, X0x11012321, X0x11012332, X0x11111000, X0x11111011, X0x11111111, X0x11111122, X0x11112110, X0x11112121, X0x11112221, X0x11112232, X0x11122100, X0x11122111, X0x11122211, X0x11122222, X0x11123210, X0x11123221, X0x11123321, X0x11123332, X0x12110000, X0x12110011, X0x12110111, X0x12110122, X0x12111110, X0x12111121, X0x12111221, X0x12111232, X0x12121100, X0x12121111, X0x12121211, X0x12121222, X0x12122210, X0x12122221, X0x12122321, X0x12122332, X0x12221000, X0x12221011, X0x12221111, X0x12221122, X0x12222110, X0x12222121, X0x12222221, X0x12222232, X0x12232100, X0x12232111, X0x12232211, X0x12232222, X0x12233210, X0x12233221, X0x12233321, X0x12233332, X0x22100000, X0x22100011, X0x22100111, X0x22100122, X0x22101110, X0x22101121, X0x22101221, X0x22101232, X0x22111100, X0x22111111, X0x22111211, X0x22111222, X0x22112210, X0x22112221, X0x22112321, X0x22112332, X0x22211000, X0x22211011, X0x22211111, X0x22211122, X0x22212110, X0x22212121, X0x22212221, X0x22212232, X0x22222100, X0x22222111, X0x22222211, X0x22222222, X0x22223210, X0x22223221, X0x22223321, X0x22223332, X0x23210000, X0x23210011, X0x23210111, X0x23210122, X0x23211110, X0x23211121, X0x23211221, X0x23211232, X0x23221100, X0x23221111, X0x23221211, X0x23221222, X0x23222210, X0x23222221, X0x23222321, X0x23222332, X0x23321000, X0x23321011, X0x23321111, X0x23321122, X0x23322110, X0x23322121, X0x23322221, X0x23322232, X0x23332100, X0x23332111, X0x23332211, X0x23332222, X0x23333210, X0x23333221, X0x23333321, X0x23333332 X}; X Xint tab2[]={ X0x00000000, X0x00000010, X0x00000101, X0x00000111, X0x00001010, X0x00001020, X0x00001111, X0x00001121, X0x00010100, X0x00010110, X0x00010201, X0x00010211, X0x00011110, X0x00011120, X0x00011211, X0x00011221, X0x00101000, X0x00101010, X0x00101101, X0x00101111, X0x00102010, X0x00102020, X0x00102111, X0x00102121, X0x00111100, X0x00111110, X0x00111201, X0x00111211, X0x00112110, X0x00112120, X0x00112211, X0x00112221, X0x01010000, X0x01010010, X0x01010101, X0x01010111, X0x01011010, X0x01011020, X0x01011111, X0x01011121, X0x01020100, X0x01020110, X0x01020201, X0x01020211, X0x01021110, X0x01021120, X0x01021211, X0x01021221, X0x01111000, X0x01111010, X0x01111101, X0x01111111, X0x01112010, X0x01112020, X0x01112111, X0x01112121, X0x01121100, X0x01121110, X0x01121201, X0x01121211, X0x01122110, X0x01122120, X0x01122211, X0x01122221, X0x10100000, X0x10100010, X0x10100101, X0x10100111, X0x10101010, X0x10101020, X0x10101111, X0x10101121, X0x10110100, X0x10110110, X0x10110201, X0x10110211, X0x10111110, X0x10111120, X0x10111211, X0x10111221, X0x10201000, X0x10201010, X0x10201101, X0x10201111, X0x10202010, X0x10202020, X0x10202111, X0x10202121, X0x10211100, X0x10211110, X0x10211201, X0x10211211, X0x10212110, X0x10212120, X0x10212211, X0x10212221, X0x11110000, X0x11110010, X0x11110101, X0x11110111, X0x11111010, X0x11111020, X0x11111111, X0x11111121, X0x11120100, X0x11120110, X0x11120201, X0x11120211, X0x11121110, X0x11121120, X0x11121211, X0x11121221, X0x11211000, X0x11211010, X0x11211101, X0x11211111, X0x11212010, X0x11212020, X0x11212111, X0x11212121, X0x11221100, X0x11221110, X0x11221201, X0x11221211, X0x11222110, X0x11222120, X0x11222211, X0x11222221, X0x01000000, X0x01000010, X0x01000101, X0x01000111, X0x01001010, X0x01001020, X0x01001111, X0x01001121, X0x01010100, X0x01010110, X0x01010201, X0x01010211, X0x01011110, X0x01011120, X0x01011211, X0x01011221, X0x01101000, X0x01101010, X0x01101101, X0x01101111, X0x01102010, X0x01102020, X0x01102111, X0x01102121, X0x01111100, X0x01111110, X0x01111201, X0x01111211, X0x01112110, X0x01112120, X0x01112211, X0x01112221, X0x02010000, X0x02010010, X0x02010101, X0x02010111, X0x02011010, X0x02011020, X0x02011111, X0x02011121, X0x02020100, X0x02020110, X0x02020201, X0x02020211, X0x02021110, X0x02021120, X0x02021211, X0x02021221, X0x02111000, X0x02111010, X0x02111101, X0x02111111, X0x02112010, X0x02112020, X0x02112111, X0x02112121, X0x02121100, X0x02121110, X0x02121201, X0x02121211, X0x02122110, X0x02122120, X0x02122211, X0x02122221, X0x11100000, X0x11100010, X0x11100101, X0x11100111, X0x11101010, X0x11101020, X0x11101111, X0x11101121, X0x11110100, X0x11110110, X0x11110201, X0x11110211, X0x11111110, X0x11111120, X0x11111211, X0x11111221, X0x11201000, X0x11201010, X0x11201101, X0x11201111, X0x11202010, X0x11202020, X0x11202111, X0x11202121, X0x11211100, X0x11211110, X0x11211201, X0x11211211, X0x11212110, X0x11212120, X0x11212211, X0x11212221, X0x12110000, X0x12110010, X0x12110101, X0x12110111, X0x12111010, X0x12111020, X0x12111111, X0x12111121, X0x12120100, X0x12120110, X0x12120201, X0x12120211, X0x12121110, X0x12121120, X0x12121211, X0x12121221, X0x12211000, X0x12211010, X0x12211101, X0x12211111, X0x12212010, X0x12212020, X0x12212111, X0x12212121, X0x12221100, X0x12221110, X0x12221201, X0x12221211, X0x12222110, X0x12222120, X0x12222211, X0x12222221 X}; X END_OF_xlife-2.0/tab.h if test 7406 -ne `wc -c <xlife-2.0/tab.h`; then echo shar: \"xlife-2.0/tab.h\" unpacked with wrong size! fi # end of overwriting check fi echo shar: End of archive 4 \(of 8\). cp /dev/null ark4isdone MISSING="" for I in 1 2 3 4 5 6 7 8 ; do if test ! -f ark${I}isdone ; then MISSING="${MISSING} ${I}" fi done if test "${MISSING}" = "" ; then echo You have unpacked all 8 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 dan ---------------------------------------------------- O'Reilly && Associates argv@sun.com / argv@ora.com Opinions expressed reflect those of the author only.