dl2n+@andrew.cmu.edu (Daniel Edward Lovinger) (07/07/90)
Submitted-by: Daniel Edward Lovinger <dl2n+@andrew.cmu.edu> Posting-number: Volume 8, Issue 39 Archive-name: xlife/part03 #! /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 3 (of 8)." # Contents: xlife-2.0/Makefile xlife-2.0/cellbox.c # xlife-2.0/doc/blockpusher.txt xlife-2.0/patterns/oscilators.life # xlife-2.0/patterns/p94.life # Wrapped by dl2n@niobe.weh.andrew.cmu.edu on Mon Jul 2 22:48:07 1990 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f xlife-2.0/Makefile -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"xlife-2.0/Makefile\" else echo shar: Extracting \"xlife-2.0/Makefile\" \(12211 characters\) sed "s/^X//" >xlife-2.0/Makefile <<'END_OF_xlife-2.0/Makefile' X# Makefile generated by imake - do not edit! X# $XConsortium: imake.c,v 1.51 89/12/12 12:37:30 jim Exp $ X X########################################################################### X# Makefile generated from "Imake.tmpl" and </tmp/IIf.a04427> X# $XConsortium: Imake.tmpl,v 1.77 89/12/18 17:01:37 jim Exp $ X# X# Platform-specific parameters may be set in the appropriate .cf X# configuration files. Site-wide parameters may be set in the file X# site.def. Full rebuilds are recommended if any parameters are changed. X# X# If your C preprocessor doesn't define any unique symbols, you'll need X# to set BOOTSTRAPCFLAGS when rebuilding imake (usually when doing X# "make Makefile", "make Makefiles", or "make World"). X# X# If you absolutely can't get imake to work, you'll need to set the X# variables at the top of each Makefile as well as the dependencies at the X# bottom (makedepend will do this automatically). X# X X########################################################################### X# platform-specific configuration parameters - edit ultrix.cf to change X X# platform: $XConsortium: ultrix.cf,v 1.20 89/12/22 15:56:14 rws Exp $ X# operating system: Ultrix-32 3.1 X X########################################################################### X# site-specific configuration parameters - edit site.def to change X X# site: $XConsortium: site.def,v 1.21 89/12/06 11:46:50 jim Exp $ X X SHELL = /bin/sh X X TOP = . X CURRENT_DIR = . X X AR = ar cq X BOOTSTRAPCFLAGS = X CC = cc X X COMPRESS = compress X CPP = /lib/cpp $(STD_CPP_DEFINES) X PREPROCESSCMD = cc -E $(STD_CPP_DEFINES) X INSTALL = /usr/bin/install X LD = ld X LINT = lint X LINTLIBFLAG = -C X LINTOPTS = -axz X LN = ln -s X MAKE = make X MV = mv X CP = cp X RANLIB = ranlib X RANLIBINSTFLAGS = X RM = rm -f X STD_INCLUDES = X STD_CPP_DEFINES = X STD_DEFINES = X EXTRA_LOAD_FLAGS = X EXTRA_LIBRARIES = X TAGS = ctags X X PROTO_DEFINES = X X INSTPGMFLAGS = X X INSTBINFLAGS = -m 0755 X INSTUIDFLAGS = -m 4755 X INSTLIBFLAGS = -m 0664 X INSTINCFLAGS = -m 0444 X INSTMANFLAGS = -m 0444 X INSTDATFLAGS = -m 0444 X INSTKMEMFLAGS = -m 4755 X X DESTDIR = X X TOP_INCLUDES = -I$(INCROOT) X X CDEBUGFLAGS = -O X CCOPTIONS = -Wf,-XNh2000 -Olimit 2000 X COMPATFLAGS = X X ALLINCLUDES = $(STD_INCLUDES) $(TOP_INCLUDES) $(INCLUDES) $(EXTRA_INCLUDES) X ALLDEFINES = $(ALLINCLUDES) $(STD_DEFINES) $(PROTO_DEFINES) $(DEFINES) $(COMPATFLAGS) X CFLAGS = $(CDEBUGFLAGS) $(CCOPTIONS) $(ALLDEFINES) X LINTFLAGS = $(LINTOPTS) -DLINT $(ALLDEFINES) X LDLIBS = $(SYS_LIBRARIES) $(EXTRA_LIBRARIES) X LDOPTIONS = $(CDEBUGFLAGS) $(CCOPTIONS) X LDCOMBINEFLAGS = -X -r X X MACROFILE = ultrix.cf X RM_CMD = $(RM) *.CKP *.ln *.BAK *.bak *.o core errs ,* *~ *.a .emacs_* tags TAGS make.log MakeOut X X IMAKE_DEFINES = X X IRULESRC = $(CONFIGDIR) X IMAKE_CMD = $(IMAKE) -DUseInstalled -I$(IRULESRC) $(IMAKE_DEFINES) X X ICONFIGFILES = $(IRULESRC)/Imake.tmpl $(IRULESRC)/Imake.rules \ X $(IRULESRC)/Project.tmpl $(IRULESRC)/site.def \ X $(IRULESRC)/$(MACROFILE) $(EXTRA_ICONFIGFILES) X X########################################################################### X# X Window System Build Parameters X# $XConsortium: Project.tmpl,v 1.63 89/12/18 16:46:44 jim Exp $ X X########################################################################### X# X Window System make variables; this need to be coordinated with rules X# $XConsortium: Project.tmpl,v 1.63 89/12/18 16:46:44 jim Exp $ X X PATHSEP = / X USRLIBDIR = $(DESTDIR)/usr/local/$(DEPOTDIR)lib X BINDIR = $(DESTDIR)/usr/local/$(DEPOTDIR)bin X INCROOT = $(DESTDIR)/usr/local/$(DEPOTDIR)include X BUILDINCROOT = $(TOP) X BUILDINCDIR = $(BUILDINCROOT)/X11 X BUILDINCTOP = .. X INCDIR = $(INCROOT)/X11 X ADMDIR = /usr/bin X LIBDIR = $(USRLIBDIR)/X11 X CONFIGDIR = $(LIBDIR)/config X LINTLIBDIR = $(USRLIBDIR)/lint X X FONTDIR = $(LIBDIR)/fonts X XINITDIR = $(LIBDIR)/xinit X XDMDIR = $(LIBDIR)/xdm X AWMDIR = $(LIBDIR)/awm X TWMDIR = $(LIBDIR)/twm X GWMDIR = $(LIBDIR)/gwm X MANPATH = $(DESTDIR)/usr/local/$(DEPOTDIR)man X MANSOURCEPATH = $(MANPATH)/man X MANDIR = $(MANSOURCEPATH) x X LIBMANDIR = $(MANSOURCEPATH)3 X XAPPLOADDIR = $(LIBDIR)/app-defaults X X FONTCFLAGS = -t X X INSTAPPFLAGS = $(INSTDATFLAGS) X X IMAKE = imake X DEPEND = makedepend X RGB = rgb X FONTC = bdftosnf X MKFONTDIR = mkfontdir X MKDIRHIER = /bin/sh $(BINDIR)/mkdirhier.sh X X CONFIGSRC = $(TOP)/config X CLIENTSRC = $(TOP)/clients X DEMOSRC = $(TOP)/demos X LIBSRC = $(TOP)/lib X FONTSRC = $(TOP)/fonts X INCLUDESRC = $(TOP)/X11 X SERVERSRC = $(TOP)/server X UTILSRC = $(TOP)/util X SCRIPTSRC = $(UTILSRC)/scripts X EXAMPLESRC = $(TOP)/examples X CONTRIBSRC = $(TOP)/../contrib X DOCSRC = $(TOP)/doc X RGBSRC = $(TOP)/rgb X DEPENDSRC = $(UTILSRC)/makedepend X IMAKESRC = $(CONFIGSRC) X XAUTHSRC = $(LIBSRC)/Xau X XLIBSRC = $(LIBSRC)/X X XMUSRC = $(LIBSRC)/Xmu X TOOLKITSRC = $(LIBSRC)/Xt X AWIDGETSRC = $(LIBSRC)/Xaw X OLDXLIBSRC = $(LIBSRC)/oldX X XDMCPLIBSRC = $(LIBSRC)/Xdmcp X BDFTOSNFSRC = $(FONTSRC)/bdftosnf X MKFONTDIRSRC = $(FONTSRC)/mkfontdir X EXTENSIONSRC = $(TOP)/extensions X X DEPEXTENSIONLIB = $(USRLIBDIR)/libXext.a X EXTENSIONLIB = -lXext X X DEPXLIB = $(DEPEXTENSIONLIB) $(USRLIBDIR)/libX11.a X XLIB = $(EXTENSIONLIB) -lX11 X X DEPXAUTHLIB = $(USRLIBDIR)/libXau.a X XAUTHLIB = -lXau X X DEPXMULIB = $(USRLIBDIR)/libXmu.a X XMULIB = -lXmu X X DEPOLDXLIB = $(USRLIBDIR)/liboldX.a X OLDXLIB = -loldX X X DEPXTOOLLIB = $(USRLIBDIR)/libXt.a X XTOOLLIB = -lXt X X DEPXAWLIB = $(USRLIBDIR)/libXaw.a X XAWLIB = -lXaw X X LINTEXTENSIONLIB = $(USRLIBDIR)/llib-lXext.ln X LINTXLIB = $(USRLIBDIR)/llib-lX11.ln X LINTXMU = $(USRLIBDIR)/llib-lXmu.ln X LINTXTOOL = $(USRLIBDIR)/llib-lXt.ln X LINTXAW = $(USRLIBDIR)/llib-lXaw.ln X X DEPLIBS = $(LOCAL_LIBRARIES) X X DEPLIBS1 = $(DEPLIBS) X DEPLIBS2 = $(DEPLIBS) X DEPLIBS3 = $(DEPLIBS) X X########################################################################### X# Imake rules for building libraries, programs, scripts, and data files X# rules: $XConsortium: Imake.rules,v 1.67 89/12/18 17:14:15 jim Exp $ X X########################################################################### X# start of Imakefile X X#Imakefile for xlife 2.0 X XPROGRAMS = xlife lifeconv X XXLIFEPATSDIR = /afs/andrew.cmu.edu/usr0/games/lib/xlife 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 Xall:: $(PROGRAMS) X X OBJS = $(OBJS1) $(OBJS2) $(OBJS3) X SRCS = $(SRCS1) $(SRCS2) $(SRCS3) X Xall:: $(PROGRAMS) X Xxlife: $(OBJS1) $(DEPLIBS1) X $(RM) $@ X $(CC) -o $@ $(LDOPTIONS) $(OBJS1) -L/usr/local/lib $(XLIB) $(LDLIBS) $(EXTRA_LOAD_FLAGS) X Xinstall:: xlife X $(INSTALL) -c $(INSTPGMFLAGS) xlife $(BINDIR) X Xinstall.man:: xlife.man X $(INSTALL) -c $(INSTMANFLAGS) xlife.man $(MANDIR)/xlife.n X Xdepend:: X $(DEPEND) -s "# DO NOT DELETE" -- $(ALLDEFINES) -- $(SRCS) X Xlint: X $(LINT) $(LINTFLAGS) $(SRCS) $(LINTLIBS) Xlint1: X $(LINT) $(LINTFLAGS) $(FILE) $(LINTLIBS) X Xclean:: X $(RM) $(PROGRAMS) X Xlifeconv: $(OBJS2) $(DEPLIBS2) X $(RM) $@ X $(CC) -o $@ $(LDOPTIONS) $(OBJS2) $(LDLIBS) $(EXTRA_LOAD_FLAGS) X Xinstall:: lifeconv X $(INSTALL) -c $(INSTPGMFLAGS) lifeconv $(BINDIR) X Xinstall.man:: lifeconv.man X $(INSTALL) -c $(INSTMANFLAGS) lifeconv.man $(MANDIR)/lifeconv.n 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 X X########################################################################### X# common rules for all Makefiles - do not edit X Xemptyrule:: X Xclean:: X $(RM_CMD) \#* X XMakefile:: X -@if [ -f Makefile ]; then \ X echo " $(RM) Makefile.bak; $(MV) Makefile Makefile.bak"; \ X $(RM) Makefile.bak; $(MV) Makefile Makefile.bak; \ X else exit 0; fi X $(IMAKE_CMD) -DTOPDIR=$(TOP) -DCURDIR=$(CURRENT_DIR) X Xtags:: X $(TAGS) -w *.[ch] X $(TAGS) -xw *.[ch] > TAGS X X########################################################################### X# empty rules for directories that do not have SUBDIRS - do not edit X Xinstall:: X @echo "install in $(CURRENT_DIR) done" X Xinstall.man:: X @echo "install.man in $(CURRENT_DIR) done" X XMakefiles:: X Xincludes:: X X########################################################################### X# dependencies generated by makedepend X END_OF_xlife-2.0/Makefile if test 12211 -ne `wc -c <xlife-2.0/Makefile`; then echo shar: \"xlife-2.0/Makefile\" unpacked with wrong size! fi # end of overwriting check fi if test -f xlife-2.0/cellbox.c -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"xlife-2.0/cellbox.c\" else echo shar: Extracting \"xlife-2.0/cellbox.c\" \(11656 characters\) sed "s/^X//" >xlife-2.0/cellbox.c <<'END_OF_xlife-2.0/cellbox.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/* X * This module encapsulates cell-box handling. Everything else in the program X * except possibly the evolution function should go through these functions X * to change the board state. Entry points are: X * X * void initcells() -- initialize board X * X * void addcell(x, y) -- set cell on X * X * void deletecell(x, y) -- set cell off X * X * void center() -- center visible board on barycenter of pattern X * X * void clear() -- blank the board, freeing all storage X * X * void redisplay() -- update visible display of current board X * X * void redrawscreen() -- redraw display, assume nothing about previous state X * X * void saveall() -- save entire board state to file X * X * This code knows that cells are packed in 8x8 cell boxes on a hash list, but X * it doesn't know anything about the internals of cell representation within X * cell boxes. It relies on the existence of a triad of functions X * X * getcell(ptr, dx, dy) -- get state of cell at x, y in box *ptr X * setcell(ptr, dx, dy, val) -- set cell at x, y in box *ptr to state val X * forget(ptr) -- cause a box to forget last generation's state X * X * to access cell state. It also relies on the existence of a function X * X * displaybox(x, y, ptr) -- post box state to Xrect arrays X */ X X#include "defs.h" X#include "data.h" X#include "cellbox.h" X#include <pwd.h> X Xextern char *ctime(); X X#define HASH(x,y) (((x>>3) & 0x7f)<< 7) + ((y>>3) & 0x7f) X#define BOXSIZE 8 X#define MARK '*' X#define SPACE '.' X#define USL_MAX 4294967295 /* max decimal value of "unsigned" */ X X#ifndef NULL X#define NULL 0 X#endif X Xcellbox *head; Xcellbox *freep; Xcellbox *boxes[HASHSIZE]; XXPoint onpoints[MAXON],offpoints[MAXON]; XXRectangle onrects[MAXOFF],offrects[MAXOFF]; X Xvoid initcells() X/* initialize the cell hash list */ X{ X bzero(boxes,sizeof(*boxes)); X} X Xvoid addcell(x,y) X/* turn a cell to state ON */ Xunsigned long x,y; X{ X unsigned long ydx,xdx; X cellbox *ptr; X X ptr = link(x,y); X ydx = y - ptr->y; X xdx = x - ptr->x; X ptr->dead=0; X X setcell(ptr, xdx, ydx, 1); X} X Xvoid deletecell(x,y) X/* turn a cell to state OFF */ Xunsigned long x,y; X{ X unsigned long ydx,xdx; X cellbox *ptr; X X ptr = link(x,y); X ydx = y - ptr->y; X xdx = x - ptr->x; X X setcell(ptr, xdx, ydx, 0); X} X Xvoid kill(ptr) Xcellbox *ptr; X{ X unsigned long hv=HASH(ptr->x,ptr->y); X X if(ptr != head){ X ptr->fore->next=ptr->next; X } X else{ X head = ptr->next; X } X if(ptr == boxes[hv]){ X boxes[hv] = ptr->hnext; X } X else{ X ptr->hfore->hnext=ptr->hnext; X } X if(ptr->next) ptr->next->fore=ptr->fore; X if(ptr->hnext) ptr->hnext->hfore=ptr->hfore; X if(ptr->rt) ptr->rt->lf=NULL; X if(ptr->lf) ptr->lf->rt=NULL; X if(ptr->up) ptr->up->dn=NULL; X if(ptr->dn) ptr->dn->up=NULL; X ptr->next=freep; X freep=ptr; X numboxes--; X} X Xcellbox *create(x,y,hv) Xunsigned long x,y,hv; X{ X cellbox *ptr; X X#ifdef PROF X create_called++; X#endif PROF X X if(freep == NULL){ X#ifdef PROF X create_null++; X#endif PROF X if((ptr= (cellbox *)malloc(sizeof(cellbox))) ==NULL){ X perror("create: malloc error: "); X exit(-1); X } X } X else{ X ptr=freep; X freep=freep->next; X } X bzero(ptr,sizeof(cellbox)); X X ptr->next=head; X head=ptr; X X if(ptr->next != NULL){ X ptr->next->fore=ptr; X } X ptr->hnext=boxes[hv]; X boxes[hv]= ptr; X X if(ptr->hnext != NULL){ X ptr->hnext->hfore=ptr; X } X ptr->x = x; X ptr->y = y; X numboxes++; X return(ptr); X} X X Xcellbox *link(x,y) Xunsigned long x,y; X{ X cellbox *ptr; X unsigned long hv; X X x &= 0xfffffff8; X y &= 0xfffffff8; X hv=HASH(x,y); X ptr = boxes[hv]; X#ifdef PROF X link_called++; X#endif PROF X if(freep){ X if (ptr==NULL){ X ptr=freep; X boxes[hv]= ptr; X freep=freep->next; X bzero(ptr,sizeof(cellbox)); X ptr->x = x; X ptr->y = y; X ptr->next=head; X head=ptr; X X if(ptr->next){ X ptr->next->fore=ptr; X } X numboxes++; X return(ptr); X } X else{ X do{ X#ifdef PROF X link_search++; X#endif PROF X if ((ptr->x == x) && (ptr->y == y)){ X return(ptr); X } X ptr=ptr->hnext; X }while(ptr!=NULL); X X return(create(x,y,hv)); X } X } X else{ X if (ptr==NULL) return(create(x,y,hv)); X do{ X#ifdef PROF X link_search++; X#endif PROF X if ((ptr->x == x) && (ptr->y == y)){ X return(ptr); X } X ptr=ptr->hnext; X }while(ptr!=NULL); X X return(create(x,y,hv)); X } X} X X Xvoid displaystats() X{ X char stats[100]; X if(dispcells){ X sprintf(stats,"Generations: %6lu, Boxes: %6lu, Cells: %7lu ",generations,numboxes,numcells); X } X else{ X sprintf(stats,"Generations: %6lu, Boxes: %6lu",generations,numboxes); X } X XClearWindow(disp,inputw); X XDrawString(disp, inputw, ntextgc,ICOORDS(0,0),stats, strlen(stats)); X X} X Xvoid newrules() X{ X int i,k; X char *ptr; X X ptr=inpbuf; X strcpy(inpbuf,"Rules: "); X ptr=inpbuf+7; X k=live; X for(i=0; i<9; i++) X { if(k&1) X { *ptr=i+48; X ptr++; X } X k>>=1; X } X *ptr='/'; X ptr++; X k=born; X for(i=0; i<9; i++) X { if(k&1) X { *ptr=i+48; X ptr++; X } X k>>=1; X } X strcpy(ptr," New Rules: "); X minbuflen=strlen(inpbuf); X XClearWindow(disp,inputw); X XDrawString(disp, inputw, ntextgc,ICOORDS(0,0),inpbuf, strlen(inpbuf)); X X getxstring(); X inpbuf[0]=0; X X k=0; X ptr=inpbuf+minbuflen; X while((*ptr>47)&&(*ptr<58)) X { k|=(1<<(*ptr-48)); X ptr++; X } X live=k; X k=0; X if(*ptr=='/') X { ptr++; X while((*ptr>47)&&(*ptr<58)) X { k|=(1<<(*ptr-48)); X ptr++; X } X born=k; X } X XClearWindow(disp,inputw); X gentab(); X} X X X Xvoid center() X/* center the display on the `center of mass' of the live boxes */ X{ X double x,y; X int ctr=0; X cellbox *ptr; X x=0.0; X y=0.0; X XClearWindow(disp,lifew); X for (ptr = head; ptr != NULL; ptr = ptr->next){ X if(!ptr->dead){ X x+= ptr->x; X y+= ptr->y; X ctr++; X } X } X x/=ctr; X y/=ctr; X xpos=x- (width >> scale); X ypos=y- (height >> scale); X redrawscreen(); X} X Xvoid clear() X/* clear the board, freeing all storage */ X{ X cellbox *ptr,*nptr; X X bzero(boxes,4*HASHSIZE); X ptr=head; X X while(ptr){ X nptr=ptr->next; X free(ptr); X ptr=nptr; X } X head=NULL; X state=STOP; X generations=0; X numboxes=0; X numcells=0; X XClearWindow(disp,lifew); X XClearWindow(disp,inputw); X displaystats(); X} X X#define ONSCREEN(x, y) (((x > xpos-BOXSIZE) && (x < (xpos+BOXSIZE+(width >> (scale-1))))) && ((y > ypos-BOXSIZE) && (y < (ypos+BOXSIZE+(height >> (scale -1)))))) X X#define POINTS 4000 /* accumulate this many point changes before writing */ X#define RECTS 64 /* accumulate this many box changes before writing */ X Xvoid redisplay() X/* re-display the visible part of the board */ X{ X cellbox *ptr; X unsigned long x,y,ctr=0; X X displaystats(); X if(state==HIDE) return; X X onpt=offpt=0; X onrect=offrect=0; X X for (ptr = head; ptr != NULL; ptr = ptr->next){ X x=ptr->x; X y=ptr->y; X if(ONSCREEN(x, y)){ X displaybox(x, y, ptr); X ctr++; X if(scale == 1){ X if((onpt >= POINTS) || (offpt >= POINTS)){ X XDrawPoints(disp,lifew,blackgc,offpoints,offpt,CoordModeOrigin); X XDrawPoints(disp,lifew,whitegc,onpoints,onpt,CoordModeOrigin); X onpt=offpt=0; X ctr=0; X } X } X else{ X if(ctr == RECTS){ X XFillRectangles(disp,lifew,blackgc,offrects,offrect); X XFillRectangles(disp,lifew,whitegc,onrects,onrect); X onrect=offrect=0; X ctr=0; X } X } X } X } X if(ctr){ X if(scale == 1){ X XDrawPoints(disp,lifew,blackgc,offpoints,offpt,CoordModeOrigin); X XDrawPoints(disp,lifew,whitegc,onpoints,onpt,CoordModeOrigin); X onpt=offpt=0; X ctr=0; X } X else{ X XFillRectangles(disp,lifew,blackgc,offrects,offrect); X XFillRectangles(disp,lifew,whitegc,onrects,onrect); X onrect=offrect=0; X ctr=0; X } X } X XFlush(disp); X} X Xvoid redrawscreen() X/* force redraw of entire board */ X{ X cellbox *ptr; X X for (ptr = head; ptr != NULL; ptr = ptr->next) X forget(ptr); X redisplay(); X} X Xvoid saveall(ofp, mode) X/* save the entire board contents */ XFILE *ofp; Xchar mode; X{ X cellbox *ptr; X int dx, dy, val,x=0; X unsigned long xmin, ymin, xmax, ymax, numcells,timeval; X struct passwd *pw; X char machine[80]; X X if(fname[0] != 0){ X fprintf(ofp,"#N %s\n",fname); X } X X timeval=time(0); X gethostname(machine,80); X if( (pw = getpwuid(getuid())) != NULL){ X fprintf(ofp,"#O %s \"%s\"@%s %s",pw->pw_name,pw->pw_gecos,machine,ctime(&timeval)); X } X X while(x < numcomments){ X fprintf(ofp,"#C %s \n",comments[x]); X x++; X } X X if (mode == 'A') /* save in absolute mode */ X { X fputs("#A\n", ofp); X for (ptr = head; ptr != NULL; ptr = ptr->next) X if (!ptr->dead) X for (dx = 0; dx < BOXSIZE; dx++) X for (dy = 0; dy < BOXSIZE; dy++) X if (val = getcell(ptr, dx, dy)) X (void) fprintf(ofp, X "%d %d\n", ptr->x+dx,ptr->y+dy); X return; X } X X /* X * Otherwise, determine the bounding box of the live cells. X */ X xmin = USL_MAX; ymin = USL_MAX; xmax = 0; ymax = 0; numcells = 0; X for (ptr = head; ptr != NULL; ptr = ptr->next) X if(!ptr->dead) X for (dx = 0; dx < BOXSIZE; dx++) X for (dy = 0; dy < BOXSIZE; dy++) X if (getcell(ptr, dx, dy)) X { X numcells++; X if (ptr->x+dx < xmin) X xmin = ptr->x+dx; X if (ptr->y+dy < ymin) X ymin = ptr->y+dy; X if (ptr->x+dx > xmax) X xmax = ptr->x+dx; X if (ptr->y+dy > ymax) X ymax = ptr->y+dy; X } X X /* caller may want save to shortest format */ X if (mode == '\0') X if (((ymax - ymin + 1) * (xmax - xmin + 1)) > numcells * 8) X mode = 'R'; X else X mode = 'P'; X X /* now that we have the bounding box, we can gen the other formats */ X if (mode == 'R') X { X for (ptr = head; ptr != NULL; ptr = ptr->next) X if (!ptr->dead) X for (dx = 0; dx < BOXSIZE; dx++) X for (dy = 0; dy < BOXSIZE; dy++) X if (val = getcell(ptr, dx, dy)) X (void) fprintf(ofp, X "%d %d\n", X ptr->x+dx-xmin, ptr->y+dy-ymin); X } X else X { X unsigned long x, y; X X (void) fprintf(ofp, "#P\n"); X for (y = ymin; y <= ymax; y++) X { X for (x = xmin; x <= xmax; x++) X { X cellbox *ptr; X X ptr = link(x,y); X if (getcell(ptr, x - ptr->x, y - ptr->y) != 0) X (void) fputc(MARK, ofp); X else X (void) fputc(SPACE, ofp); X } X (void) fputc('\n', ofp); X } X } X} X END_OF_xlife-2.0/cellbox.c if test 11656 -ne `wc -c <xlife-2.0/cellbox.c`; then echo shar: \"xlife-2.0/cellbox.c\" unpacked with wrong size! fi # end of overwriting check fi if test -f xlife-2.0/doc/blockpusher.txt -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"xlife-2.0/doc/blockpusher.txt\" else echo shar: Extracting \"xlife-2.0/doc/blockpusher.txt\" \(11012 characters\) sed "s/^X//" >xlife-2.0/doc/blockpusher.txt <<'END_OF_xlife-2.0/doc/blockpusher.txt' XDate: Wed, 22 Nov 89 03:38 EST XFrom: Dean Hickerson <HUL@PSUVM.Bitnet> XSubject: Description of block pusher XTo: rwg@YUKON.SCRC.SYMBOLICS.COM, dba@ANDREW.CMU.EDU, rcs@LA.TIS.COM, X acw@YUKON.SCRC.SYMBOLICS.COM X XHere's the promised description of block pusher. It's fairly detailed and Xincludes some things which you've all seen before; I put them in so I can Xsend it to Wainwright, Trevorrow, and others who haven't been following Xour discussion. X X The block pusher consists of a stationary pattern made of guns, Xeaters, and glider streams, and a block some distance to the SE. The Xpattern fires a group of 5 gliders at the block; when they hit, the block Xis moved farther SE and a glider is sent back NW. When this glider reaches Xthe stationary part, another glider group is sent toward the block. Since Xthe round trip time keeps increasing, points along the gliders's flight Xpaths never become periodic. X X The collision which moves the block is shown below. The gliders are Xlabelled A, B, C, D, and E. Gliders A and B move the block 7 units west Xand 4 units south. Gliders C and D turn it into a boat. Glider E turns it Xback into a block, 5 units SE of its original position, and sends back a NW Xglider. (I'd known the glider+boat -> block+glider reaction for several Xyears. I found the gliders+block -> boat reaction after just a few minutes Xof experimenting. Putting these together results in pushing the block, but Xalso moves it off the diagonal. I then tried hundreds of collisions Xbetween 2 gliders and a block until I found one which moved the block back Xto the correct diagonal; I was hoping for a combination which moved it X15 or 23 units, but 5 was the best I found. My search was by no means Xcomplete, so it's possible that there's a group of only 4 (or maybe even 3 Xor 2) gliders which does the job.) X X e.e............................... X .ee............................... X .e................................ X .................................. X .................................. X .....d............................ X ......d........................... X ....ddd........................... X .................................. X .................................. X ..........c....................... X ...........c..........b........... X .........ccc...........b.......... X .....................bbb.......... X .................................. X .................................. X .................................. X ............................a..... X .............................a..oo X ...........................aaa..oo X X The stationary part of block pusher lies along a NW-SE diagonal, and Xconsists of 3 pieces. At the NW end is the shotgun, which produces a 5 Xglider group every 120 generations. Next there's the suppressor, which Xshoots gliders at the shotgun's output, destroying the groups. Finally, Xthere's the catcher, which waits for a glider to come from the block and Xthen deletes one of the suppressor's gliders, thereby allowing one glider Xgroup to escape toward the block. X X The shotgun builds the groups's gliders in the order A, E, D, C, B. XGliders A are produced by a p120 gun aimed SE. Gliders E are produced by a Xp120 gun aimed SW; they hit a queen bee shuttle which reflects them 90 Xdegrees to SE, as shown here: X X o......... X ooo.....o. X ...o...o.. X ..oo...ooo X .......... X ......o... X ......o... X .....o.... X .......... X .......... X ..oo...oo. X ..o.....o. X .......... X ...o...o.. X ....ooo... X .......... X .......... X .......... X .......... X ..oo...... X ...o...... X ooo....... X o......... X XNext, gliders D are produced by a LW spaceship gun aimed north and a glider Xgun aimed SW; they collide as shown here: X X .o.... X .o.o.. X .oo... X ...... X ...... X ooo... X o..o.. X o..... X o..... X .o.o.. X XGliders C and B are produced in the same way, except that for B the LW Xspaceship gun is aimed west and the glider gun is aimed NE. Each LW Xspaceship gun is made from 2 glider guns whose gliders collide in the Xvicinity of a pentadecathlon. (Thanks to Bill for providing both the 90 Xdegree turn and the LW synthesis.) X X ..............o.o... X ...............oo... X ...............o.... X .................... X .................... X .................... X .................oo. X .................o.o X .o..oo....oo..o..o.. X o...ooo..ooo...o.... X .o..oo....oo..o..... X XAltogether, the shotgun consists of 11 p120 glider guns, one shuttle, and 3 XPDs. X X The suppressor is essentially a p120 glider gun whose output Xannihilates the glider groups. (Actually I used a p30 gun, 3/4th of whose Xgliders get deleted by a glider stream from the catcher.) The annihilation Xis done like this: X X e.e............................... X .ee............................... X .e................................ X .................................. X .................................. X .....d............................ X ......d........................... X ....ddd........................... X .................................. X .................................. X ..........c....................... X ...........c..........b........... X .........ccc...........b.......... X .....................bbb.......... X .................................. X .................................. X .................................. X ............................a..... X .............................a.... X ...........................aaa.... X .................................. X ...............................o.o X ...............................oo. X ................................o. X XFinding a way to delete a group with just one glider wasn't really Xnecessary, but made the catcher's circuitry much simpler. Fortunately, the Xgliders+block reaction shown earlier occurs in 3 stages, so there's some Xflexibility in the spacing of the glider group. Hence there are more ways Xto crash a glider into a group than if its geometry were fixed, so the Xchance that one of them would cause annihilation was increased. It only Xtook a couple hours of experimenting to find the one shown above. X X The catcher's job is to detect a glider coming from the block. There Xare two difficulties. First, the phase of the return glider is only known Xmod 40: If the block is 5 units farther away, the round trip time is Xincreased by 40. That's why I chose p120 logic; there are only 3 Xpossibilities for the return glider's phase. Second, the return glider's Xflight path overlaps that of the glider groups, so whatever detects the Xglider must not interfere with the groups. Fortunately, a NE glider can Xslip between gliders B and C. (If this hadn't been possible, it would have Xbeen necessary to either use slower guns, thereby increasing the number of Xpossible return glider phases, or to add circuitry to turn off the Xdetectors when a glider group goes by.) Here's a circuit diagram of the Xcatcher: X X Shotgun Suppressor X \ / X \ /\ X \ E / \ X \ \/ \ X \ /\ \ X \ E / \ \ X \ \/ \ \ X \ /\ \ \ X \ / \ \ \ X \ / \ \ \ X \/ \ \ \ X \ /\ \ \ X \ / G5 /\ \ X \ / / G4 /\ X \/ / / G3 X /\ / / X / \ / / X G2 \ / / X \/ / X /\ / X / \ / X G1 \ / X \/ X /\ X / \ X G0 . X . X . X \ X \ X Block X X"G" is a gun, "E" is an eater. Guns G0-G2 have period 120, while G3-G5 and Xthe suppressor have period 30. Wherever gliders meet, they both vanish. XNormally, during a 120 generation cycle, one of the 4 gliders produced by XG3 is deleted by one from G0; hence 3 of the 4 from the suppressor are Xdeleted. There's also one missing from each of G4 and G5, so the Xsuppressor's remaining glider gets through to hit the shotgun's output. XBut when a glider comes from the block, one glider is deleted from either XG0, G1, or G2, so an extra one escapes from either G3, G4, or G5, the usual Xescapee from the suppressor is deleted, and a glider group escapes. X---------------------------------------------------------------------- X It should be possible to modify this construction to give a pattern Xwhose population grows like C sqrt(t) for some C: Reposition G3 so its Xoutput hits the output of G0 in a ternary reaction, replace the suppressor Xby a p120 gun, and add two p120 guns and an eater as shown: X X E Suppressor X \/ X /\ G7 X / \ \ X . \ /\ X . \ / \ X . \/ \ X /\ . X / \ . X G6 /\ . X / G3 X . X . X . X / X G0 X XThe G3 stream's data, after its collision with the G0 stream, will be X0011/1111 in a 120 generation cycle; the first bits occur normally, the Xothers when a return glider has deleted one from G0. G6 produces 0100 and Xhits the stream from G3 in a vanish reaction, so it becomes 0100/0000. XThis then hits the output of G7 (0100) in a vanish reaction, so a glider Xescapes from G7 only if a return glider has deleted one from G0. XMeanwhile, the G3 stream after its collision with the G6 stream is X0011/1011; the first of these bits is used to release or delete the Xsuppressor's output. Eventually, the population will be dominated by the Xoutputs from G7 and will grow like C sqrt(t). END_OF_xlife-2.0/doc/blockpusher.txt if test 11012 -ne `wc -c <xlife-2.0/doc/blockpusher.txt`; then echo shar: \"xlife-2.0/doc/blockpusher.txt\" unpacked with wrong size! fi # end of overwriting check fi if test -f xlife-2.0/patterns/oscilators.life -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"xlife-2.0/patterns/oscilators.life\" else echo shar: Extracting \"xlife-2.0/patterns/oscilators.life\" \(7621 characters\) sed "s/^X//" >xlife-2.0/patterns/oscilators.life <<'END_OF_xlife-2.0/patterns/oscilators.life' X#O jb7m "Jon C. R. Bennett"@sushi.andrew.cmu.edu Fri Jan 12 18:08:41 1990 X204 68 X204 69 X201 67 X202 68 X203 68 X192 68 X193 67 X193 68 X188 63 X189 61 X189 62 X189 63 X190 60 X191 60 X191 61 X193 66 X194 65 X195 65 X195 66 X204 59 X205 59 X206 62 X206 63 X207 62 X207 64 X208 64 X209 64 X209 65 X197 62 X197 63 X197 64 X198 62 X198 65 X199 62 X200 63 X202 65 X202 66 X203 59 X204 51 X204 56 X205 57 X205 58 X207 55 X207 56 X208 56 X209 53 X209 54 X209 55 X210 53 X196 56 X196 57 X196 58 X198 53 X198 54 X198 55 X199 53 X199 56 X200 53 X201 54 X202 58 X203 51 X189 51 X189 52 X190 52 X191 52 X191 54 X191 55 X192 53 X193 57 X194 58 X195 55 X195 58 X205 48 X205 49 X205 50 X206 48 X196 48 X196 50 X197 49 X197 50 X203 50 X194 47 X194 48 X195 48 X199 20 X199 21 X200 20 X200 22 X201 22 X202 22 X202 23 X207 19 X190 22 X191 20 X191 21 X191 22 X192 19 X193 19 X193 20 X204 17 X205 15 X205 16 X205 18 X206 18 X207 18 X196 17 X197 14 X197 17 X198 15 X198 16 X198 17 X200 12 X200 13 X200 14 X201 12 X201 15 X202 12 X203 13 X191 11 X192 11 X193 11 X193 13 X193 14 X194 12 X195 16 X191 10 X205 9 X205 10 X206 10 X207 7 X207 8 X207 9 X208 7 X196 6 X196 7 X197 7 X198 7 X198 9 X199 8 X199 9 X160 75 X160 76 X161 75 X162 76 X163 75 X163 76 X164 68 X164 69 X164 71 X165 71 X165 73 X165 74 X166 71 X166 72 X166 74 X158 70 X158 72 X158 73 X159 70 X159 71 X159 73 X160 73 X161 68 X161 69 X161 70 X161 71 X161 73 X162 68 X163 69 X163 71 X163 73 X163 74 X164 51 X164 53 X164 56 X165 51 X165 54 X165 55 X166 51 X158 53 X158 54 X159 51 X159 52 X159 53 X160 55 X160 58 X161 51 X161 52 X161 53 X161 55 X161 56 X161 57 X161 58 X163 51 X163 53 X163 55 X163 56 X166 50 X160 50 X161 50 X163 50 X164 36 X165 36 X166 35 X158 37 X158 38 X159 36 X159 38 X160 36 X161 36 X162 38 X162 40 X162 41 X163 35 X163 36 X163 38 X163 39 X163 41 X165 34 X166 34 X158 33 X158 34 X159 33 X160 34 X161 33 X161 34 X162 33 X164 20 X164 22 X164 24 X165 19 X165 20 X165 24 X166 21 X166 22 X166 23 X167 20 X168 20 X168 21 X158 21 X158 24 X159 21 X159 24 X160 19 X160 20 X160 23 X161 21 X161 22 X162 19 X162 21 X162 23 X163 20 X158 16 X159 16 X159 17 X161 17 X162 16 X162 18 X163 16 X163 17 X163 18 X164 14 X164 15 X165 15 X165 17 X165 18 X166 15 X166 17 X167 16 X14 92 X14 93 X14 95 X15 93 X15 95 X15 96 X15 97 X16 91 X16 98 X17 92 X17 93 X17 95 X17 96 X17 97 X18 95 X19 91 X19 92 X19 93 X17 90 X18 90 X20 93 X20 94 X36 97 X37 96 X38 96 X38 98 X39 97 X40 98 X34 95 X34 96 X35 95 X35 97 X34 100 X34 101 X35 99 X35 102 X36 99 X36 100 X36 103 X37 101 X37 102 X38 100 X39 100 X40 99 X56 99 X57 99 X52 94 X53 93 X53 95 X54 92 X54 94 X54 96 X55 92 X55 96 X56 93 X56 94 X56 96 X56 98 X57 97 X58 91 X58 92 X58 93 X58 94 X58 95 X58 96 X59 91 X59 94 X57 11 X58 12 X59 12 X54 8 X55 7 X55 9 X56 6 X56 9 X57 7 X57 8 X57 10 X58 8 X59 8 X59 10 X60 9 X61 10 X60 13 X60 14 X61 11 X61 12 X61 15 X62 12 X62 14 X63 13 X52 35 X52 30 X52 34 X53 29 X53 31 X53 33 X54 29 X54 33 X55 30 X55 31 X55 32 X56 32 X56 34 X57 33 X57 34 X50 35 X51 36 X47 31 X47 32 X48 31 X49 28 X49 32 X49 33 X49 34 X50 28 X50 29 X50 30 X50 31 X51 32 X51 33 X54 59 X55 59 X49 55 X49 56 X50 55 X50 56 X52 53 X52 54 X52 55 X52 56 X53 53 X53 56 X54 56 X54 58 X55 51 X55 52 X55 53 X55 54 X55 56 X56 51 X56 57 X57 52 X57 53 X57 54 X57 55 X57 56 X58 54 X54 75 X55 75 X59 75 X59 76 X54 69 X54 70 X54 74 X55 69 X55 71 X55 73 X56 71 X56 73 X57 70 X57 74 X58 70 X58 72 X58 74 X59 71 X60 72 X60 73 X60 74 X61 74 X60 77 X61 76 X62 75 X68 82 X70 82 X71 82 X68 83 X69 83 X71 83 X71 84 X71 85 X72 86 X73 84 X73 87 X74 83 X74 85 X74 87 X75 83 X75 88 X75 89 X76 84 X76 85 X76 86 X76 88 X77 86 X77 88 X78 87 X88 73 X88 74 X89 74 X90 74 X85 76 X85 78 X86 75 X86 77 X86 78 X87 75 X87 79 X87 80 X88 76 X88 77 X88 78 X88 81 X89 79 X89 80 X90 76 X90 78 X91 75 X91 78 X92 76 X92 77 X100 82 X101 81 X102 81 X103 82 X100 84 X100 86 X101 86 X101 87 X102 83 X102 84 X102 88 X103 86 X103 87 X104 83 X104 84 X104 85 X105 85 X98 86 X98 87 X99 83 X99 84 X99 87 X126 91 X129 91 X123 91 X132 77 X132 78 X132 79 X132 80 X132 81 X132 82 X134 79 X134 80 X134 81 X134 82 X135 79 X135 82 X132 83 X132 84 X132 85 X132 86 X132 87 X134 83 X134 84 X134 85 X135 85 X124 85 X124 86 X124 88 X124 90 X125 85 X125 86 X125 88 X125 90 X126 88 X126 90 X127 85 X127 86 X127 88 X127 90 X128 85 X128 86 X128 88 X128 90 X129 83 X129 84 X129 88 X129 90 X130 83 X130 84 X130 88 X131 88 X117 85 X118 83 X118 84 X118 85 X120 83 X120 84 X120 85 X120 86 X120 87 X121 88 X122 83 X122 84 X122 88 X123 83 X123 84 X123 88 X123 90 X124 76 X124 78 X124 79 X125 76 X125 78 X125 79 X126 76 X127 76 X127 78 X127 79 X128 76 X128 78 X128 79 X129 76 X129 80 X129 81 X130 76 X130 80 X130 81 X131 76 X124 74 X125 74 X126 73 X126 74 X127 74 X128 74 X129 73 X129 74 X117 79 X117 82 X118 79 X118 80 X118 81 X118 82 X120 77 X120 78 X120 79 X120 80 X120 81 X120 82 X121 76 X122 76 X122 80 X122 81 X123 76 X123 80 X123 81 X123 73 X123 74 X128 59 X129 60 X130 60 X131 60 X131 62 X131 63 X132 60 X132 62 X132 63 X133 60 X134 60 X135 59 X125 56 X125 57 X126 56 X126 57 X128 54 X128 55 X128 56 X128 57 X128 58 X129 53 X130 53 X130 57 X130 58 X131 51 X131 53 X131 57 X131 58 X131 50 X132 51 X132 53 X132 55 X132 56 X133 53 X133 55 X133 56 X134 53 X135 54 X135 55 X135 56 X135 57 X135 58 X137 56 X137 57 X138 56 X138 57 X132 50 X124 35 X125 35 X126 35 X126 36 X124 30 X124 31 X124 33 X125 30 X125 31 X125 33 X126 28 X126 29 X126 33 X127 28 X127 29 X127 33 X128 33 X129 28 X129 29 X129 30 X129 31 X129 32 X130 27 X131 28 X131 29 X131 30 X123 34 X132 30 X124 0 X124 1 X124 3 X124 5 X124 6 X124 10 X125 3 X125 10 X126 3 X126 5 X126 6 X126 7 X126 8 X126 9 X127 4 X128 5 X128 6 X128 7 X129 7 X120 11 X121 12 X122 12 X123 12 X123 13 X116 8 X117 6 X117 7 X117 8 X118 5 X119 6 X119 7 X119 8 X119 9 X119 10 X121 6 X121 7 X121 8 X121 10 X122 3 X122 5 X122 8 X122 10 X123 3 X123 5 X123 10 X121 2 X122 1 X123 1 X98 57 X98 58 X99 53 X99 54 X99 57 X101 59 X101 60 X102 59 X102 60 X100 53 X100 55 X100 57 X101 54 X101 57 X102 57 X103 57 X104 55 X104 57 X105 55 X105 56 X106 53 X106 54 X107 54 X108 47 X108 48 X108 49 X108 50 X109 47 X110 50 X111 50 X104 48 X104 49 X105 48 X105 50 X106 49 X108 51 X108 52 X108 53 X110 51 X111 51 X76 53 X76 54 X77 51 X77 55 X77 56 X78 51 X78 52 X78 53 X78 54 X78 57 X79 56 X79 57 X80 51 X80 52 X81 51 X81 52 X69 48 X69 49 X70 48 X70 49 X71 45 X72 45 X72 46 X72 47 X72 48 X72 49 X72 50 X74 47 X74 48 X74 49 X75 46 X69 51 X69 52 X70 51 X70 52 X71 55 X72 51 X72 52 X72 53 X72 54 X72 55 X74 53 X75 52 X75 54 X76 46 X76 48 X76 49 X77 44 X77 45 X78 43 X78 46 X78 47 X78 48 X78 49 X78 50 X79 43 X79 44 X80 48 X80 49 X81 48 X81 49 X98 35 X99 36 X100 35 X100 28 X100 34 X101 29 X101 33 X102 27 X102 29 X102 33 X103 27 X103 29 X103 31 X103 32 X104 28 X104 30 X105 28 X105 30 X106 29 X102 24 X102 25 X103 24 X103 26 X94 32 X94 33 X95 32 X96 33 X97 32 X97 33 X98 29 X98 30 X98 34 X99 28 X99 31 X99 32 X99 33 X76 22 X76 23 X77 22 X77 25 X78 23 X78 24 X78 25 X78 26 X80 25 X80 26 X81 25 X81 26 X68 25 X68 26 X70 23 X70 24 X70 25 X70 26 X71 22 X71 25 X72 22 X72 23 X74 26 X76 27 X76 28 X76 29 X78 27 X78 28 X78 29 X78 30 X78 31 X79 29 X79 32 X80 31 X80 32 X69 29 X70 27 X70 28 X70 29 X70 30 X70 31 X71 32 X72 27 X72 28 X72 29 X72 32 X73 30 X73 32 X73 33 X74 30 X75 30 X67 25 X67 26 X100 11 X100 12 X101 11 X101 12 X100 3 X100 5 X100 9 X101 4 X101 9 X102 5 X102 6 X102 7 X102 8 X104 5 X104 6 X105 5 X105 6 X95 7 X95 8 X96 7 X97 8 X98 5 X98 6 X98 7 X98 9 X99 4 X99 7 X99 9 X77 2 X78 2 X76 6 X77 3 X77 7 X78 7 X79 3 X79 4 X79 5 X79 6 X81 3 X81 4 X82 3 X82 4 X74 9 X75 7 X75 8 X75 9 X14 10 X15 10 X17 8 X17 9 X17 10 X18 7 X18 10 X19 7 X19 8 X29 7 X29 8 X30 7 X30 10 X31 8 X31 9 X31 10 X33 10 X34 10 X28 15 X28 17 X28 18 X29 12 X29 13 X29 14 X29 17 X30 17 X31 11 X31 12 X31 13 X31 14 X31 15 X31 16 X32 14 X33 11 X34 11 X20 15 X20 17 X20 18 X21 11 X21 15 X22 11 X22 15 X23 12 X23 13 X23 14 X25 12 X25 13 X25 14 X26 11 X26 15 X27 11 X27 15 X14 11 X15 11 X16 14 X17 11 X17 12 X17 13 X17 14 X17 15 X17 16 X18 17 X19 12 X19 13 X19 14 X19 17 X28 38 X28 39 X28 40 X28 41 X30 40 X30 41 X31 40 X31 41 X20 38 X20 39 X21 38 X21 39 X23 38 X23 39 X23 40 X23 41 X24 35 X24 37 X24 42 X25 35 X25 37 X25 39 X25 42 X26 37 X26 38 X26 42 X27 37 X27 40 X27 42 X24 34 X25 34 X26 44 X26 45 X27 44 X27 45 X27 75 X27 76 X28 75 X28 76 X22 69 X22 70 X23 69 X23 72 X24 70 X24 71 X24 72 X26 70 X26 71 X26 72 X27 67 X27 69 X27 71 X27 73 X27 66 X28 67 X28 69 X28 73 X29 69 X29 73 X30 69 X30 73 X31 70 X31 71 X31 72 X33 70 X33 71 X33 72 X34 69 X34 72 X35 69 X35 70 X28 66 X1 35 X1 36 X2 35 X3 36 X0 31 X0 32 X1 31 X1 33 X2 33 X3 28 X3 29 X3 32 X3 33 X4 35 X4 28 X4 34 X5 29 X5 30 X5 31 X5 33 X6 33 X7 29 X7 30 X7 32 X8 29 X8 30 X8 32 X8 33 X5 57 X6 57 X6 58 X8 57 X8 58 X9 57 X10 58 X3 59 X3 58 X4 59 X4 64 X5 62 X5 63 X5 64 X6 61 X7 62 X8 59 X8 60 X8 62 X9 63 X9 64 X10 59 X10 60 X10 61 X10 62 X10 65 X11 60 X11 64 X11 65 END_OF_xlife-2.0/patterns/oscilators.life if test 7621 -ne `wc -c <xlife-2.0/patterns/oscilators.life`; then echo shar: \"xlife-2.0/patterns/oscilators.life\" unpacked with wrong size! fi # end of overwriting check fi if test -f xlife-2.0/patterns/p94.life -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"xlife-2.0/patterns/p94.life\" else echo shar: Extracting \"xlife-2.0/patterns/p94.life\" \(20396 characters\) sed "s/^X//" >xlife-2.0/patterns/p94.life <<'END_OF_xlife-2.0/patterns/p94.life' X#R X -1 -303 X 0 -303 X -1 -302 X -7 -301 X -3 -301 X -1 -301 X -8 -300 X -6 -300 X -3 -300 X -2 -300 X -8 -299 X -6 -299 X -7 -298 X-12 -292 X-13 -291 X-12 -291 X-11 -291 X-13 -290 X-11 -290 X-10 -290 X-12 -289 X-11 -289 X-10 -289 X-12 -288 X-11 -288 X-10 -288 X-12 -287 X-11 -287 X-30 -283 X-28 -283 X-30 -282 X-29 -282 X-29 -281 X-30 -265 X-29 -265 X-30 -264 X -7 -264 X -6 -264 X -5 -264 X-32 -263 X-30 -263 X -7 -263 X -4 -263 X-32 -262 X-31 -262 X -7 -262 X-51 -261 X-50 -261 X -7 -261 X -3 -261 X-51 -260 X-50 -260 X -7 -260 X-28 -259 X-27 -259 X -6 -259 X -4 -259 X-41 -258 X-28 -258 X-43 -257 X-42 -257 X-40 -257 X-39 -257 X-30 -257 X-28 -257 X-43 -256 X-42 -256 X-40 -256 X-39 -256 X-30 -256 X-29 -256 X-49 -255 X-48 -255 X-44 -255 X-43 -255 X-40 -255 X-39 -255 X-34 -255 X-50 -254 X-48 -254 X-43 -254 X-41 -254 X-35 -254 X-50 -253 X-42 -253 X-36 -253 X-35 -253 X-34 -253 X-51 -252 X-50 -252 X-35 -252 X-34 -252 X-32 -252 X-31 -252 X-34 -251 X-33 -251 X-28 -251 X-27 -251 X-37 -250 X-36 -250 X-34 -250 X-33 -250 X-28 -250 X-27 -250 X-54 -249 X-53 -249 X-52 -249 X-34 -249 X-54 -248 X-38 -248 X-35 -248 X-53 -247 X-38 -247 X-36 -247 X-12 -245 X-13 -244 X-12 -244 X-11 -244 X-14 -243 X-13 -243 X-11 -243 X-14 -242 X-13 -242 X-12 -242 X-14 -241 X-13 -241 X-12 -241 X-35 -240 X-34 -240 X-33 -240 X-13 -240 X-12 -240 X-35 -239 X-32 -239 X-31 -239 X-57 -238 X-35 -238 X-34 -238 X-31 -238 X-26 -238 X-25 -238 X-59 -237 X-58 -237 X-33 -237 X-32 -237 X-31 -237 X-26 -237 X-25 -237 X-58 -236 X-57 -236 X-49 -236 X-48 -236 X-37 -236 X-48 -235 X-38 -235 X-37 -235 X-36 -235 X-48 -234 X-46 -234 X-39 -234 X-37 -234 X-35 -234 X-47 -233 X-46 -233 X-40 -233 X-39 -233 X-35 -233 X-38 -232 X-36 -232 X-28 -232 X-27 -232 X-28 -231 X-26 -231 X-26 -230 X-34 -229 X-32 -229 X-26 -229 X-25 -229 X-49 -228 X-48 -228 X-33 -228 X-32 -228 X-49 -227 X-48 -227 X-33 -227 X-32 -217 X-31 -217 X -7 -217 X -6 -217 X -5 -217 X-47 -216 X-46 -216 X-32 -216 X-31 -216 X -8 -216 X -5 -216 X-55 -215 X-54 -215 X-48 -215 X-47 -215 X -5 -215 X-54 -214 X-46 -214 X -9 -214 X -5 -214 X-54 -213 X-52 -213 X -5 -213 X-53 -212 X-52 -212 X-43 -212 X-42 -212 X -8 -212 X -6 -212 X-45 -211 X-43 -211 X-42 -211 X-41 -211 X-34 -211 X-33 -211 X-45 -210 X-44 -210 X-41 -210 X-34 -210 X-32 -210 X-43 -209 X-42 -209 X-32 -209 X-32 -208 X-31 -208 X-55 -207 X-54 -207 X-48 -207 X-47 -207 X-55 -206 X-54 -206 X-48 -206 X-46 -206 X-10 -206 X-48 -205 X-46 -205 X -9 -205 X -8 -205 X-47 -204 X-46 -204 X-10 -204 X -9 -204 X-37 -199 X-36 -199 X-37 -198 X-12 -198 X-50 -197 X-49 -197 X-39 -197 X-37 -197 X-27 -197 X-13 -197 X-12 -197 X-11 -197 X-51 -196 X-49 -196 X-39 -196 X-38 -196 X-29 -196 X-27 -196 X-13 -196 X-11 -196 X-10 -196 X-58 -195 X-57 -195 X-51 -195 X-49 -195 X-28 -195 X-27 -195 X-12 -195 X-11 -195 X-10 -195 X-58 -194 X-57 -194 X-51 -194 X-50 -194 X-12 -194 X-11 -194 X-10 -194 X-35 -193 X-34 -193 X-12 -193 X-11 -193 X-46 -192 X-45 -192 X-35 -192 X-48 -191 X-47 -191 X-44 -191 X-37 -191 X-35 -191 X-48 -190 X-46 -190 X-45 -190 X-44 -190 X-37 -190 X-36 -190 X-56 -189 X-55 -189 X-46 -189 X-45 -189 X-57 -188 X-55 -188 X-57 -187 X-49 -187 X-58 -186 X-57 -186 X-51 -186 X-50 -186 X-50 -185 X-49 -185 X-35 -185 X-34 -185 X-35 -184 X-34 -184 X-54 -183 X-53 -183 X-55 -182 X-53 -182 X 15 -182 X-55 -181 X 13 -181 X 16 -181 X-56 -180 X-55 -180 X 13 -180 X 15 -180 X 14 -179 X 16 -179 X-57 -177 X-56 -177 X-56 -176 X 6 -176 X 7 -176 X-56 -175 X-54 -175 X-53 -175 X 6 -175 X 7 -175 X-55 -174 X 29 -174 X 30 -174 X-51 -173 X-36 -173 X-35 -173 X 29 -173 X-53 -172 X-36 -172 X-35 -172 X 27 -172 X 29 -172 X-59 -171 X-58 -171 X-52 -171 X 27 -171 X 28 -171 X-58 -170 X -7 -170 X -6 -170 X -5 -170 X 8 -170 X 9 -170 X 22 -170 X 23 -170 X-58 -169 X-56 -169 X-45 -169 X -7 -169 X -4 -169 X 7 -169 X 9 -169 X 21 -169 X 24 -169 X-57 -168 X-56 -168 X-45 -168 X -7 -168 X 7 -168 X 18 -168 X 21 -168 X 23 -168 X-46 -167 X-38 -167 X-37 -167 X -7 -167 X -3 -167 X 6 -167 X 7 -167 X 17 -167 X 22 -167 X-45 -166 X-44 -166 X-38 -166 X-36 -166 X -7 -166 X 18 -166 X 20 -166 X 21 -166 X 29 -166 X 30 -166 X-46 -165 X-45 -165 X-44 -165 X-36 -165 X -6 -165 X -4 -165 X 19 -165 X 20 -165 X 29 -165 X 30 -165 X-53 -164 X-52 -164 X-51 -164 X-48 -164 X-47 -164 X-46 -164 X-36 -164 X-35 -164 X 10 -164 X 11 -164 X-59 -163 X-58 -163 X-54 -163 X-52 -163 X-50 -163 X-48 -163 X-47 -163 X-28 -163 X-27 -163 X 9 -163 X 11 -163 X-59 -162 X-58 -162 X-54 -162 X-50 -162 X-47 -162 X-27 -162 X-26 -162 X 9 -162 X-54 -161 X-52 -161 X-48 -161 X-40 -161 X-39 -161 X-28 -161 X 8 -161 X 9 -161 X-53 -160 X-52 -160 X-50 -160 X-48 -160 X-40 -160 X-38 -160 X 4 -160 X 5 -160 X-51 -159 X-50 -159 X-49 -159 X-38 -159 X 3 -159 X 4 -159 X-38 -158 X-37 -158 X 5 -158 X 18 -156 X 17 -155 X-48 -154 X-47 -154 X-46 -154 X 17 -154 X-50 -153 X-49 -153 X-47 -153 X-45 -153 X 27 -153 X 28 -153 X-51 -152 X-49 -152 X-45 -152 X 27 -152 X 28 -152 X-56 -151 X-55 -151 X-51 -151 X-47 -151 X-44 -151 X 4 -151 X 5 -151 X 20 -151 X-56 -150 X-55 -150 X-51 -150 X-49 -150 X-47 -150 X-45 -150 X-44 -150 X 5 -150 X 19 -150 X 21 -150 X-50 -149 X-49 -149 X-48 -149 X-45 -149 X-44 -149 X-43 -149 X-33 -149 X-32 -149 X 5 -149 X 7 -149 X 18 -149 X 19 -149 X 21 -149 X 22 -149 X-43 -148 X-42 -148 X-41 -148 X-33 -148 X 6 -148 X 7 -148 X 19 -148 X 22 -148 X-42 -147 X-41 -147 X-35 -147 X-33 -147 X 20 -147 X 21 -147 X 25 -147 X 26 -147 X-43 -146 X-35 -146 X-34 -146 X 25 -146 X 27 -146 X-54 -145 X-53 -145 X-42 -145 X 27 -145 X-55 -144 X-53 -144 X-42 -144 X 27 -144 X 28 -144 X-55 -143 X 4 -143 X 5 -143 X 13 -143 X-56 -142 X-55 -142 X-49 -142 X 4 -142 X 5 -142 X 13 -142 X-50 -141 X-33 -141 X-32 -141 X 13 -141 X-50 -140 X-49 -140 X-48 -140 X-33 -140 X-32 -140 X 9 -139 X 10 -139 X 11 -139 X 15 -139 X 16 -139 X 17 -139 X 13 -137 X 13 -136 X 13 -135 X-52 -132 X-51 -132 X-51 -131 X 18 -131 X 19 -131 X-51 -130 X-49 -130 X 17 -130 X 18 -130 X-50 -129 X-49 -129 X 19 -129 X-31 -128 X-30 -128 X-31 -127 X-30 -127 X-54 -126 X-53 -126 X-41 -126 X-40 -126 X-39 -126 X-53 -125 X-42 -125 X 40 -125 X-53 -124 X-51 -124 X-43 -124 X-39 -124 X 38 -124 X 40 -124 X-52 -123 X-51 -123 X-43 -123 X-39 -123 X-38 -123 X -7 -123 X -6 -123 X -5 -123 X 39 -123 X 40 -123 X-43 -122 X-37 -122 X-33 -122 X-32 -122 X -8 -122 X -5 -122 X-45 -121 X-42 -121 X-33 -121 X-31 -121 X -5 -121 X-46 -120 X-44 -120 X-41 -120 X-37 -120 X-31 -120 X -9 -120 X -5 -120 X-46 -119 X-44 -119 X-39 -119 X-31 -119 X-30 -119 X -5 -119 X-54 -118 X-53 -118 X -8 -118 X -6 -118 X-54 -117 X-53 -117 X-47 -117 X-44 -117 X-35 -116 X-34 -116 X-47 -115 X-43 -115 X-35 -115 X-33 -115 X-46 -114 X-45 -114 X-44 -114 X-33 -114 X-33 -113 X-32 -113 X-44 -111 X-43 -111 X-42 -111 X-46 -109 X-40 -109 X-31 -109 X-30 -109 X-46 -108 X-40 -108 X-31 -108 X 42 -108 X-46 -107 X-40 -107 X-33 -107 X-31 -107 X 41 -107 X 42 -107 X-33 -106 X-32 -106 X 41 -106 X 43 -106 X-52 -105 X-51 -105 X-44 -105 X-43 -105 X-42 -105 X-52 -104 X-51 -104 X-29 -103 X-28 -103 X 54 -103 X 55 -103 X 56 -103 X-29 -102 X 54 -102 X 55 -102 X-31 -101 X-29 -101 X 56 -101 X 64 -101 X 65 -101 X-31 -100 X-30 -100 X 64 -100 X 65 -100 X-50 -99 X-49 -99 X-37 -99 X-36 -99 X-35 -99 X 41 -99 X 42 -99 X-51 -98 X-49 -98 X-40 -98 X-34 -98 X 42 -98 X 57 -98 X-51 -97 X-41 -97 X-35 -97 X-34 -97 X 42 -97 X 44 -97 X 56 -97 X 57 -97 X 58 -97 X-52 -96 X-51 -96 X-42 -96 X-41 -96 X-39 -96 X-35 -96 X 43 -96 X 44 -96 X 56 -96 X 59 -96 X-40 -95 X-35 -95 X-29 -95 X-28 -95 X 57 -95 X 58 -95 X 62 -95 X 63 -95 X-38 -94 X-36 -94 X-29 -94 X-28 -94 X 62 -94 X 64 -94 X-38 -93 X-37 -93 X 64 -93 X 64 -92 X 65 -92 X-50 -91 X 41 -91 X 42 -91 X 50 -91 X-51 -90 X 41 -90 X 42 -90 X 50 -90 X 51 -90 X-51 -89 X-50 -89 X-49 -89 X 51 -88 X 52 -88 X 53 -88 X-47 -87 X-46 -87 X 51 -87 X 54 -87 X-46 -86 X 52 -86 X 53 -86 X-46 -85 X-44 -85 X 52 -85 X-45 -84 X-44 -84 X-35 -84 X-34 -84 X 45 -84 X-35 -83 X-33 -83 X-26 -83 X-25 -83 X 44 -83 X 45 -83 X 59 -83 X 60 -83 X-37 -82 X-32 -82 X-26 -82 X-25 -82 X 43 -82 X 46 -82 X 59 -82 X-49 -81 X-48 -81 X-39 -81 X-38 -81 X-36 -81 X-32 -81 X 44 -81 X 45 -81 X 46 -81 X 57 -81 X 59 -81 X-48 -80 X-38 -80 X-32 -80 X-31 -80 X 57 -80 X 58 -80 X-48 -79 X-46 -79 X-37 -79 X-31 -79 X 38 -79 X 39 -79 X 46 -79 X 47 -79 X-47 -78 X-46 -78 X-34 -78 X-33 -78 X-32 -78 X 38 -78 X 39 -78 X 47 -78 X-28 -77 X-27 -77 X 61 -77 X 62 -77 X-28 -76 X-26 -76 X -7 -76 X -6 -76 X -5 -76 X 61 -76 X-26 -75 X -7 -75 X -4 -75 X 59 -75 X 61 -75 X-26 -74 X-25 -74 X -7 -74 X 54 -74 X 55 -74 X 59 -74 X 60 -74 X 76 -74 X-49 -73 X-48 -73 X -7 -73 X -3 -73 X 40 -73 X 41 -73 X 53 -73 X 56 -73 X 77 -73 X-49 -72 X-48 -72 X-41 -72 X-40 -72 X-39 -72 X -7 -72 X 39 -72 X 41 -72 X 53 -72 X 54 -72 X 55 -72 X 75 -72 X 76 -72 X 77 -72 X -6 -71 X -4 -71 X 39 -71 X 54 -71 X-43 -70 X-37 -70 X 38 -70 X 39 -70 X-43 -69 X-37 -69 X 61 -69 X 62 -69 X-43 -68 X-37 -68 X 53 -68 X 61 -68 X 62 -68 X-40 -67 X-39 -67 X 51 -67 X 52 -67 X-44 -66 X-43 -66 X 51 -66 X 52 -66 X 53 -66 X-46 -65 X-40 -65 X-31 -65 X-30 -65 X-46 -64 X-40 -64 X-31 -64 X-46 -63 X-40 -63 X-33 -63 X-31 -63 X 38 -63 X 40 -63 X-33 -62 X-32 -62 X 38 -62 X 39 -62 X-52 -61 X-51 -61 X-44 -61 X-43 -61 X-42 -61 X 39 -61 X-52 -60 X-51 -60 X-29 -59 X-28 -59 X-29 -58 X-31 -57 X-29 -57 X-16 -57 X-31 -56 X-30 -56 X-15 -56 X-14 -56 X-50 -55 X-49 -55 X-37 -55 X-36 -55 X-35 -55 X-16 -55 X-15 -55 X-51 -54 X-49 -54 X-40 -54 X-34 -54 X-51 -53 X-41 -53 X-35 -53 X-34 -53 X-52 -52 X-51 -52 X-42 -52 X-41 -52 X-39 -52 X-35 -52 X-40 -51 X-35 -51 X-29 -51 X-28 -51 X-38 -50 X-36 -50 X-29 -50 X-28 -50 X-48 -49 X-47 -49 X-38 -49 X-37 -49 X-49 -48 X-47 -48 X-49 -47 X-50 -46 X-49 -46 X 36 -46 X 37 -46 X 38 -46 X 38 -45 X 37 -44 X-51 -43 X-50 -43 X-50 -42 X 24 -42 X-50 -41 X-48 -41 X-40 -41 X-39 -41 X-38 -41 X 22 -41 X 24 -41 X 25 -41 X-49 -40 X-48 -40 X-40 -40 X-39 -40 X 14 -40 X 15 -40 X 22 -40 X-38 -39 X-30 -39 X-29 -39 X 14 -39 X 15 -39 X-30 -38 X-29 -38 X 37 -38 X 38 -38 X-53 -37 X-52 -37 X 37 -37 X-52 -36 X-37 -36 X 21 -36 X 22 -36 X 23 -36 X 35 -36 X 37 -36 X-52 -35 X-50 -35 X-38 -35 X-37 -35 X-36 -35 X-16 -35 X-15 -35 X-14 -35 X 20 -35 X 23 -35 X 35 -35 X 36 -35 X-51 -34 X-50 -34 X-38 -34 X-35 -34 X-14 -34 X 16 -34 X 17 -34 X 21 -34 X 22 -34 X-37 -33 X-36 -33 X-32 -33 X-31 -33 X-15 -33 X 15 -33 X 17 -33 X-32 -32 X-30 -32 X 3 -32 X 4 -32 X 5 -32 X 15 -32 X 65 -32 X-30 -31 X 3 -31 X 14 -31 X 15 -31 X 63 -31 X 64 -31 X 65 -31 X-30 -30 X-29 -30 X 4 -30 X 37 -30 X 38 -30 X 62 -30 X-53 -29 X-52 -29 X-44 -29 X 28 -29 X 29 -29 X 30 -29 X 37 -29 X 38 -29 X 62 -29 X 63 -29 X-53 -28 X-52 -28 X-45 -28 X-44 -28 X 18 -28 X 19 -28 X-34 -27 X-33 -27 X 17 -27 X 19 -27 X 26 -27 X 32 -27 X-47 -26 X-46 -26 X-45 -26 X-34 -26 X-32 -26 X 17 -26 X 26 -26 X 32 -26 X-48 -25 X-45 -25 X-32 -25 X 16 -25 X 17 -25 X 26 -25 X 32 -25 X-47 -24 X-46 -24 X-32 -24 X-31 -24 X-46 -23 X 28 -23 X 29 -23 X 30 -23 X-39 -22 X 28 -22 X-39 -21 X-38 -21 X 26 -21 X 27 -21 X-40 -20 X-37 -20 X-40 -19 X-39 -19 X-38 -19 X 26 -19 X 28 -19 X 27 -18 X 50 -18 X 51 -18 X 52 -18 X-50 -17 X-49 -17 X-41 -17 X-40 -17 X 35 -17 X 36 -17 X 52 -17 X-50 -16 X-49 -16 X-41 -16 X 35 -16 X 36 -16 X 51 -16 X-27 -15 X-26 -15 X 12 -15 X 13 -15 X 26 -15 X 27 -15 X-27 -14 X 13 -14 X 24 -14 X-29 -13 X-27 -13 X 13 -13 X 15 -13 X-34 -12 X-33 -12 X-29 -12 X-28 -12 X 14 -12 X 15 -12 X 20 -12 X 21 -12 X 23 -12 X-48 -11 X-47 -11 X-35 -11 X-32 -11 X 19 -11 X 23 -11 X 33 -11 X 34 -11 X-49 -10 X-47 -10 X-35 -10 X-34 -10 X-33 -10 X 26 -10 X 33 -10 X 35 -10 X-49 -9 X-34 -9 X 20 -9 X 21 -9 X 25 -9 X 35 -9 X-50 -8 X-49 -8 X 21 -8 X 24 -8 X 35 -8 X 36 -8 X-27 -7 X-26 -7 X 12 -7 X 13 -7 X 22 -7 X 23 -7 X-35 -6 X-27 -6 X-26 -6 X 12 -6 X 13 -6 X-37 -5 X-36 -5 X-37 -4 X-36 -4 X-35 -4 X 31 -4 X 33 -4 X 32 -3 X 33 -3 X 32 -2 X-50 -1 X-48 -1 X-50 0 X-49 0 X-48 1 X-49 2 X-48 2 X-49 3 X-47 3 X-49 4 X 27 5 X 28 5 X-29 6 X-28 6 X 10 6 X 11 6 X 26 6 X 28 6 X-39 7 X-38 7 X-29 7 X-28 7 X 10 7 X 11 7 X 28 7 X-52 8 X-51 8 X-40 8 X-39 8 X-37 8 X-36 8 X 33 8 X 34 8 X-51 9 X-41 9 X-37 9 X-36 9 X 33 9 X-51 10 X-49 10 X-36 10 X 31 10 X 33 10 X-50 11 X-49 11 X-38 11 X-36 11 X 20 11 X 21 11 X 31 11 X 32 11 X-38 12 X-36 12 X-31 12 X-30 12 X 12 12 X 13 12 X 19 12 X 21 12 X-31 13 X-29 13 X 11 13 X 13 13 X 18 13 X 19 13 X-29 14 X 11 14 X 26 14 X 27 14 X 28 14 X-29 15 X-28 15 X 10 15 X 11 15 X 24 15 X 25 15 X-52 16 X-51 16 X 23 16 X 24 16 X 25 16 X 27 16 X 29 16 X 30 16 X 33 16 X 34 16 X-52 17 X-51 17 X 22 17 X 23 17 X 26 17 X 29 17 X 30 17 X 33 17 X 34 17 X-43 18 X 22 18 X 23 18 X 24 18 X 26 18 X 27 18 X 29 18 X 30 18 X-43 19 X 22 19 X 23 19 X 25 19 X-44 20 X-42 20 X 27 20 X 28 20 X-43 21 X 24 21 X 25 21 X-43 22 X-46 23 X-46 24 X-34 24 X-33 24 X-47 25 X-45 25 X-34 25 X 14 25 X 15 25 X 26 25 X 27 25 X 28 25 X-46 26 X-36 26 X-34 26 X 15 26 X-46 27 X-36 27 X-35 27 X 15 27 X 17 27 X 26 27 X 28 27 X-55 28 X-54 28 X 4 28 X 6 28 X 16 28 X 17 28 X 27 28 X-55 29 X-54 29 X 4 29 X 5 29 X 35 29 X 36 29 X-32 30 X-31 30 X 5 30 X 35 30 X 36 30 X-32 31 X-21 31 X-19 31 X 12 31 X 13 31 X 26 31 X 27 31 X-34 32 X-32 32 X-20 32 X-19 32 X 13 32 X 24 32 X-41 33 X-39 33 X-34 33 X-33 33 X-20 33 X 13 33 X 15 33 X-53 34 X-52 34 X-41 34 X-39 34 X 14 34 X 15 34 X 20 34 X 21 34 X 23 34 X-54 35 X-52 35 X-39 35 X 19 35 X 23 35 X 33 35 X 34 35 X-54 36 X-44 36 X-40 36 X-39 36 X 26 36 X 33 36 X 35 36 X-55 37 X-54 37 X-43 37 X-42 37 X-40 37 X-39 37 X 20 37 X 21 37 X 25 37 X 35 37 X-42 38 X-41 38 X-32 38 X-31 38 X 21 38 X 24 38 X 35 38 X 36 38 X-32 39 X-31 39 X 12 39 X 13 39 X 22 39 X 23 39 X-51 40 X-50 40 X 12 40 X 13 40 X-52 41 X-50 41 X-52 42 X 31 42 X 33 42 X-53 43 X-52 43 X 32 43 X 33 43 X 22 44 X 32 44 X 21 45 X 23 45 X-52 46 X-51 46 X 20 46 X 23 46 X-51 47 X 21 47 X-51 48 X-49 48 X-50 49 X-49 49 X-31 50 X-30 50 X-31 51 X-30 51 X-54 52 X-53 52 X-53 53 X-41 53 X-40 53 X-39 53 X-53 54 X-51 54 X-42 54 X-38 54 X-52 55 X-51 55 X-43 55 X-42 56 X-37 56 X-33 56 X-32 56 X-45 57 X-41 57 X-40 57 X-38 57 X-37 57 X-33 57 X-31 57 X-48 58 X-45 58 X-39 58 X-31 58 X-21 58 X-20 58 X-19 58 X-49 59 X-45 59 X-31 59 X-30 59 X-19 59 X-54 60 X-53 60 X-45 60 X-20 60 X-54 61 X-53 61 X 51 61 X-48 62 X-47 62 X-45 62 X-44 62 X-35 62 X-34 62 X 49 62 X 50 62 X 51 62 X-46 63 X-44 63 X-35 63 X-33 63 X 49 63 X 50 63 X 51 63 X-44 64 X-33 64 X 39 64 X 40 64 X-77 65 X-76 65 X-33 65 X-32 65 X 39 65 X 41 65 X-76 66 X -9 66 X -8 66 X 39 66 X-76 67 X-74 67 X-10 67 X -9 67 X -8 67 X-75 68 X-74 68 X-10 68 X -9 68 X -8 68 X 59 68 X 60 68 X-41 69 X-10 69 X -9 69 X -7 69 X 49 69 X 50 69 X 59 69 X 60 69 X-43 70 X-41 70 X -9 70 X -8 70 X -7 70 X 36 70 X 37 70 X 48 70 X 49 70 X 51 70 X 52 70 X-45 71 X-44 71 X-42 71 X-41 71 X -8 71 X 37 71 X 47 71 X 51 71 X 52 71 X-51 72 X-50 72 X 37 72 X 39 72 X 52 72 X-51 73 X-50 73 X-42 73 X 38 73 X 39 73 X 50 73 X 52 73 X-46 74 X-42 74 X-28 74 X-27 74 X 50 74 X 52 74 X 57 74 X 58 74 X 71 74 X-45 75 X-42 75 X-36 75 X-28 75 X 57 75 X 59 75 X 71 75 X 72 75 X-42 76 X-38 76 X-37 76 X-35 76 X-34 76 X-30 76 X-28 76 X 59 76 X 70 76 X 72 76 X-39 77 X-34 77 X-30 77 X-29 77 X 59 77 X 60 77 X-49 78 X-48 78 X-40 78 X 36 78 X 37 78 X-50 79 X-48 79 X-39 79 X-35 79 X 36 79 X 37 79 X-50 80 X-38 80 X-37 80 X-36 80 X 45 80 X 55 80 X 56 80 X-51 81 X-50 81 X 45 81 X 55 81 X 57 81 X-28 82 X-27 82 X 44 82 X 46 82 X 57 82 X-28 83 X-27 83 X 45 83 X 57 83 X 58 83 X-47 84 X-46 84 X 45 84 X-48 85 X-46 85 X 48 85 X-48 86 X 48 86 X-49 87 X-48 87 X 47 87 X 49 87 X 48 88 X 48 89 X 39 90 X 40 90 X-49 91 X 39 91 X 40 91 X-50 92 X-49 92 X 62 92 X 63 92 X-50 93 X-48 93 X 62 93 X-31 94 X-30 94 X 60 94 X 62 94 X-31 95 X-30 95 X 53 95 X 55 95 X 60 95 X 61 95 X-54 96 X-53 96 X 41 96 X 42 96 X 53 96 X 55 96 X-53 97 X-41 97 X-40 97 X-39 97 X 40 97 X 42 97 X 55 97 X-53 98 X-51 98 X-42 98 X-38 98 X 40 98 X 50 98 X 54 98 X 55 98 X-52 99 X-51 99 X-43 99 X 39 99 X 40 99 X 51 99 X 52 99 X 54 99 X 55 99 X-42 100 X-37 100 X-33 100 X-32 100 X 52 100 X 53 100 X 62 100 X 63 100 X-45 101 X-41 101 X-40 101 X-38 101 X-37 101 X-33 101 X-31 101 X 62 101 X 63 101 X-48 102 X-45 102 X-39 102 X-31 102 X-49 103 X-45 103 X-31 103 X-30 103 X 42 103 X-54 104 X-53 104 X-45 104 X 42 104 X 44 104 X-54 105 X-53 105 X 42 105 X 43 105 X 53 105 X 54 105 X-48 106 X-47 106 X-45 106 X-44 106 X-35 106 X-34 106 X 53 106 X 54 106 X 55 106 X-46 107 X-44 107 X-35 107 X-33 107 X 53 107 X 54 107 X 55 107 X-44 108 X-33 108 X 53 108 X-33 109 X-32 109 X 54 109 X-35 113 X-34 113 X -8 113 X -7 113 X-48 114 X-47 114 X-46 114 X-35 114 X -8 114 X -7 114 X -6 114 X-77 115 X-76 115 X-50 115 X-49 115 X-47 115 X-45 115 X-37 115 X-35 115 X -8 115 X -7 115 X -6 115 X-76 116 X-51 116 X-49 116 X-45 116 X-37 116 X-36 116 X -9 116 X -7 116 X -6 116 X-76 117 X-74 117 X-56 117 X-55 117 X-51 117 X-47 117 X-44 117 X -9 117 X -8 117 X -7 117 X-75 118 X-74 118 X-73 118 X-56 118 X-55 118 X-51 118 X-49 118 X-47 118 X-45 118 X-44 118 X -8 118 X-73 119 X-72 119 X-71 119 X-50 119 X-49 119 X-48 119 X-45 119 X-44 119 X-43 119 X-33 119 X-32 119 X-73 120 X-72 120 X-43 120 X-42 120 X-41 120 X-33 120 X-71 121 X-42 121 X-41 121 X-35 121 X-33 121 X-43 122 X-35 122 X-34 122 X-54 123 X-53 123 X-42 123 X-55 124 X-53 124 X-42 124 X-55 125 X-56 126 X-55 126 X-49 126 X 19 126 X 34 126 X 35 126 X-50 127 X-33 127 X-32 127 X 18 127 X 35 127 X 36 127 X-48 128 X-33 128 X-32 128 X 18 128 X 19 128 X 20 128 X 34 128 X-52 129 X-53 130 X-51 130 X-50 130 X-53 131 X-54 132 X-53 132 X 11 137 X 10 138 X 12 138 X 9 139 X 13 139 X-35 140 X-34 140 X 10 140 X 12 140 X-50 141 X-35 141 X-34 141 X 11 141 X-58 142 X-57 142 X-50 142 X-49 142 X 2 142 X 3 142 X-57 143 X-51 143 X-48 143 X 2 143 X 3 143 X-57 144 X-55 144 X-48 144 X 25 144 X 26 144 X-56 145 X-55 145 X-51 145 X-50 145 X-47 145 X-46 145 X 25 145 X-51 146 X-50 146 X-45 146 X-37 146 X-36 146 X 23 146 X 25 146 X-51 147 X-49 147 X-46 147 X-45 147 X-44 147 X-37 147 X-35 147 X 23 147 X 24 147 X-51 148 X-50 148 X-45 148 X-35 148 X 4 148 X 5 148 X 18 148 X 19 148 X-51 149 X-47 149 X-46 149 X-35 149 X-34 149 X 3 149 X 5 149 X 17 149 X 20 149 X-58 150 X-57 150 X-53 150 X-52 150 X-51 150 X-48 150 X 3 150 X 14 150 X 17 150 X 19 150 X-58 151 X-57 151 X-52 151 X-50 151 X-48 151 X 2 151 X 3 151 X 13 151 X 18 151 X-51 152 X-50 152 X-49 152 X 14 152 X 16 152 X 17 152 X 25 152 X 26 152 X-50 153 X 15 153 X 16 153 X 25 153 X 26 153 X 5 155 X 4 156 X 4 157 X 5 157 X 6 157 X-40 158 X-39 158 X-32 158 X-40 159 X-31 159 X-53 160 X-42 160 X-40 160 X-33 160 X-32 160 X-31 160 X -9 160 X -8 160 X-54 161 X-53 161 X-52 161 X-42 161 X-41 161 X-10 161 X -9 161 X -8 161 X 6 161 X 7 161 X-61 162 X-60 162 X-55 162 X-53 162 X-51 162 X-10 162 X -9 162 X -8 162 X 7 162 X-61 163 X-60 163 X-56 163 X-55 163 X-54 163 X-51 163 X-10 163 X -9 163 X -7 163 X 7 163 X 9 163 X-54 164 X-50 164 X-49 164 X-38 164 X-37 164 X -9 164 X -8 164 X -7 164 X 8 164 X 9 164 X-54 165 X-53 165 X-48 165 X-38 165 X -8 165 X 27 165 X 28 165 X-54 166 X-52 166 X-49 166 X-48 166 X-47 166 X-40 166 X-38 166 X 27 166 X 28 166 X-54 167 X-53 167 X-48 167 X-40 167 X-39 167 X 4 167 X 5 167 X-59 168 X-58 168 X-54 168 X-53 168 X-50 168 X-49 168 X 5 168 X-60 169 X-58 169 X-51 169 X 5 169 X 7 169 X 18 169 X-60 170 X-54 170 X-51 170 X 6 170 X 7 170 X 17 170 X 18 170 X 19 170 X-61 171 X-60 171 X-53 171 X-52 171 X 17 171 X 20 171 X 25 171 X 26 171 X-53 172 X-38 172 X-37 172 X 10 172 X 11 172 X 12 172 X 18 172 X 20 172 X 25 172 X 27 172 X-38 173 X-37 173 X 9 173 X 19 173 X 27 173 X-57 174 X-56 174 X 5 174 X 7 174 X 8 174 X 12 174 X 27 174 X 28 174 X-58 175 X-56 175 X 4 175 X 10 175 X 11 175 X-58 176 X 4 176 X-59 177 X-58 177 X 5 177 X 6 177 X 10 177 X 11 177 X 12 177 X 13 177 X 8 178 X 14 178 X 15 178 X 12 179 X 14 179 X 15 179 X-58 180 X-57 180 X 13 180 X-57 181 X-57 182 X-55 182 X-56 183 X-55 183 X 9 183 X 10 183 X-37 184 X-36 184 X 8 184 X 10 184 X-37 185 X-36 185 X 10 185 X-60 186 X-59 186 X-59 187 X-14 187 X-12 187 X 34 187 X-59 188 X-57 188 X-53 188 X-52 188 X-51 188 X-15 188 X 35 188 X-58 189 X-57 189 X-54 189 X-50 189 X-15 189 X-11 189 X 33 189 X 34 189 X 35 189 X-55 190 X-49 190 X-39 190 X-38 190 X-15 190 X-55 191 X-49 191 X-39 191 X-37 191 X-15 191 X-12 191 X-55 192 X-49 192 X-37 192 X-15 192 X-14 192 X-13 192 X-54 193 X-50 193 X-37 193 X-36 193 X-60 194 X-59 194 X-53 194 X-52 194 X-51 194 X-60 195 X-59 195 X-41 196 X-40 196 X-41 197 X-39 197 X-39 198 X-33 198 X-32 198 X-39 199 X-38 199 X-32 199 X-31 199 X-33 200 X-57 206 X-56 206 X-57 207 X-56 207 X-50 207 X-49 207 X-48 207 X-15 207 X-14 207 X-13 207 X -8 207 X -7 207 X-51 208 X-47 208 X-34 208 X-33 208 X-13 208 X -8 208 X -7 208 X -6 208 X-52 209 X-46 209 X-34 209 X-14 209 X -8 209 X -7 209 X -6 209 X-52 210 X-46 210 X-36 210 X-34 210 X -9 210 X -7 210 X -6 210 X-52 211 X-46 211 X-36 211 X-35 211 X -9 211 X -8 211 X -7 211 X-55 212 X-54 212 X-51 212 X-47 212 X -8 212 X-56 213 X-54 213 X-50 213 X-49 213 X-48 213 X-56 214 X-57 215 X-56 215 X-34 216 X-33 216 X-34 217 X-33 217 X-77 220 X-76 220 X-76 221 X-76 222 X-74 222 X-75 223 X-74 223 X-51 227 X-50 227 X-51 228 X-50 228 X-28 229 X-27 229 X-36 230 X-35 230 X-34 230 X-28 230 X-37 231 X-33 231 X-31 231 X-30 231 X-28 231 X-38 232 X-29 232 X-49 233 X-48 233 X-39 233 X-35 233 X-50 234 X-48 234 X-39 234 X-36 234 X-34 234 X-16 234 X-14 234 X-50 235 X-39 235 X-35 235 X-31 235 X-13 235 X-51 236 X-50 236 X-38 236 X-32 236 X-17 236 X-13 236 X-37 237 X-33 237 X-28 237 X-27 237 X-13 237 X-36 238 X-35 238 X-34 238 X-28 238 X-27 238 X-16 238 X-13 238 X-58 239 X-57 239 X-56 239 X-15 239 X-14 239 X-13 239 X-58 240 X-57 241 X-53 245 X-51 245 X-53 246 X-52 246 X-52 247 X-39 248 X-38 248 X-37 248 X-39 249 X-36 249 X-35 249 X-39 250 X-38 250 X-35 250 X-30 250 X-29 250 X-37 251 X-36 251 X-35 251 X-30 251 X-29 251 X-53 252 X-52 252 X-41 252 X-52 253 X-42 253 X-41 253 X-40 253 X-52 254 X-50 254 X-43 254 X-41 254 X-39 254 X -9 254 X -8 254 X-51 255 X-50 255 X-44 255 X-43 255 X-39 255 X-10 255 X -9 255 X -8 255 X-42 256 X-40 256 X-32 256 X-31 256 X-10 256 X -9 256 X -8 256 X-32 257 X-30 257 X-10 257 X -9 257 X -7 257 X-30 258 X -9 258 X -8 258 X -7 258 X-38 259 X-36 259 X-30 259 X-29 259 X -8 259 X-53 260 X-52 260 X-37 260 X-36 260 X-53 261 X-52 261 X-37 261 X-34 262 X-33 262 X-34 263 X-32 263 X-32 264 X-32 265 X-31 265 X-14 281 X-12 281 X-15 282 X-15 283 X-11 283 X-29 284 X-28 284 X-15 284 X-29 285 X-27 285 X-15 285 X-12 285 X-29 286 X-15 286 X-14 286 X-13 286 X -9 298 X-10 299 X -8 299 X-10 300 X -8 300 X -5 300 X -4 300 X -9 301 X -5 301 X -3 301 X -3 302 X -3 303 X -2 303 END_OF_xlife-2.0/patterns/p94.life if test 20396 -ne `wc -c <xlife-2.0/patterns/p94.life`; then echo shar: \"xlife-2.0/patterns/p94.life\" unpacked with wrong size! fi # end of overwriting check fi echo shar: End of archive 3 \(of 8\). cp /dev/null ark3isdone 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.