dl2n+@andrew.cmu.edu (Daniel Edward Lovinger) (07/07/90)
Submitted-by: Daniel Edward Lovinger <dl2n+@andrew.cmu.edu> Posting-number: Volume 8, Issue 41 Archive-name: xlife/part05 #! /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 5 (of 8)." # Contents: xlife-2.0/data.h xlife-2.0/file.c xlife-2.0/icon.h # xlife-2.0/lifeconv.c xlife-2.0/patterns/background1.life # xlife-2.0/patterns/billiards.life # xlife-2.0/patterns/blockpusher4.life # xlife-2.0/patterns/counter.life # xlife-2.0/patterns/gliderarmyof256.life # xlife-2.0/patterns/rake2.life xlife-2.0/patterns/round.life # xlife-2.0/utils.c xlife-2.0/xlife.man # Wrapped by dl2n@niobe.weh.andrew.cmu.edu on Mon Jul 2 22:48:10 1990 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f xlife-2.0/data.h -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"xlife-2.0/data.h\" else echo shar: Extracting \"xlife-2.0/data.h\" \(3374 characters\) sed "s/^X//" >xlife-2.0/data.h <<'END_OF_xlife-2.0/data.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 Xextern int sys_nerr, errno; Xextern char *sys_errlist[]; X#define SYSERR sys_errlist[(errno > sys_nerr? 0 : errno)] X XGLOBAL Display *disp; XGLOBAL Window rootw, mainw, lifew, inputw; XGLOBAL int screen; XGLOBAL unsigned long fcolor, bcolor; XGLOBAL XEvent event; XGLOBAL XFontStruct *nfont, *bfont; XGLOBAL int getinput; X#define INPBUFLEN 255 XGLOBAL char inpbuf[INPBUFLEN]; XGLOBAL int minbuflen; X#define DIRBUFLEN 100 XGLOBAL int numcomments; X#define MAXCOMMENTS 50 XGLOBAL char comments[MAXCOMMENTS][256]; XGLOBAL char loadirbuf[DIRBUFLEN]; XGLOBAL char loadir[DIRBUFLEN]; XGLOBAL char keybuf[16]; XGLOBAL char lookup[0xfffff]; XGLOBAL char fname[256]; XGLOBAL KeySym ks; XGLOBAL XGCValues xgcv; XGLOBAL GC ntextgc, btextgc,inputgc,blackgc,whitegc; XGLOBAL Pixmap lifepm; XGLOBAL Cursor cursor; X XGLOBAL char *itoa(); X XGLOBAL unsigned long xpos,ypos; X XGLOBAL int getcell(); XGLOBAL void generate(); XGLOBAL void addcell(); XGLOBAL void deletecell(); XGLOBAL void redisplay(); XGLOBAL void forget(); XGLOBAL void Motion(); XGLOBAL void setcell(); XGLOBAL void kill(); XGLOBAL void clear(); XGLOBAL void savefile(); XGLOBAL void loadfile(); XGLOBAL void center(); XGLOBAL void newrules(); XGLOBAL void redrawscreen(); XGLOBAL void help(); XGLOBAL void randomize(); XGLOBAL void settimeout(); XGLOBAL void gentab(); XGLOBAL void saveall(); XGLOBAL void getxstring(); XGLOBAL void name_file(); XGLOBAL void comment(); XGLOBAL void view_comments(); XGLOBAL void benchmark(); XGLOBAL unsigned long dispcells; XGLOBAL unsigned long load; XGLOBAL unsigned long save; XGLOBAL unsigned long scale; XGLOBAL unsigned long born; XGLOBAL unsigned long live; XGLOBAL unsigned long run; XGLOBAL unsigned long maxdead; XGLOBAL unsigned long hide; XGLOBAL unsigned long generations; XGLOBAL unsigned long numboxes; XGLOBAL unsigned long numcells; XGLOBAL unsigned long collisions; X#define CHASHSIZE 65537 X#define CHASHMULT 16383 X XGLOBAL unsigned long hashcnt[CHASHSIZE]; XGLOBAL int width; XGLOBAL int height; XGLOBAL int inputlength; XGLOBAL int onpt,offpt,onrect,offrect; XGLOBAL int state; XGLOBAL struct timeval timeout; X X XGLOBAL int link_called; XGLOBAL int link_search; XGLOBAL int create_called; XGLOBAL int create_null; END_OF_xlife-2.0/data.h if test 3374 -ne `wc -c <xlife-2.0/data.h`; then echo shar: \"xlife-2.0/data.h\" unpacked with wrong size! fi # end of overwriting check fi if test -f xlife-2.0/file.c -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"xlife-2.0/file.c\" else echo shar: Extracting \"xlife-2.0/file.c\" \(5219 characters\) sed "s/^X//" >xlife-2.0/file.c <<'END_OF_xlife-2.0/file.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 <stdio.h> X#include <pwd.h> X#include <ctype.h> X Xchar *gethome() X{ X return(getpwuid(getuid())->pw_dir); X} X X Xchar *checktilda(stng) Xchar *stng; X{ X static char full[1024]; X struct passwd *pw; X int i; X if (stng[0]=='~') { X i=1; X while(stng[i]!='/' && stng[i]!='\0') X full[i-1]=stng[i], i++; X if (i==1) X strcpy(full,gethome()); X else { X full[i-1]='\0'; X if((pw = getpwnam(full)) == NULL){ X XClearWindow(disp,inputw); X XDrawString(disp,inputw,ntextgc,ICOORDS(0,0),SYSERR,strlen(SYSERR)); X } X else{ X strcpy(full,pw->pw_dir); X } X } X strcat(full,stng+i); X } else X strcpy(full,stng); X return(full); X} X Xchar *addlifeext(buf) Xchar *buf; X{ X int len=strlen(buf); X if(strcmp(buf+len-5,".life")){ X return(".life"); X } X return(""); X} X Xvoid savefile(){ X X FILE *savefl; X char outbuf[100]; X X strcpy(inpbuf,"Save to:"); X minbuflen=8; X strcat(inpbuf, "./"); X XClearWindow(disp,inputw); X XDrawString(disp, inputw, ntextgc,ICOORDS(0,0),inpbuf, strlen(inpbuf)); X X getxstring(); X X strcpy(outbuf,checktilda(inpbuf+8)); X inpbuf[0]=0; X strcat(outbuf,addlifeext(outbuf)); X if((savefl=fopen(outbuf,"w")) != NULL){ X saveall(savefl, '\0'); X fclose(savefl); X } X else{ X XClearWindow(disp,inputw); X XDrawString(disp,inputw,ntextgc,ICOORDS(0,0),SYSERR,strlen(SYSERR)); X } X} X X Xint do_loadfile(filename, hotx, hoty) X char *filename; X int hotx, hoty; X{ X FILE *loadfl; X int x,y, linect = 0; X#define M_ABSOLUTE 0 X#define M_RELATIVE 1 X#define M_PICTURE 2 X int loadmode = M_ABSOLUTE; X X if ((loadfl=fopen(filename,"r")) != NULL) X { X char buf[BUFSIZ]; X int xoff = 0, yoff = 0; X X while (fgets(buf, BUFSIZ, loadfl) != (char *)NULL) X { X if (buf[0] == '#') X { X char incl[BUFSIZ]; X int lx, ly; X X incl[0] = '\0'; X switch(buf[1]) X { X X case 'N': X (void) strcat(fname,buf+2); X fname[strlen(fname)-1]=0; X break; X X case 'A': X loadmode = M_ABSOLUTE; X break; X X case 'R': X loadmode = M_RELATIVE; X xoff = yoff = 0; X (void) sscanf(buf+2, " %d %d", &xoff, &yoff); X break; X X case 'P': X loadmode = M_PICTURE; X xoff = yoff = 0; X (void) sscanf(buf+2, " %d %d", &xoff, &yoff); X break; X X case 'I': X xoff = yoff = 0; X (void) sscanf(buf+2, " %s %d %d", incl, &xoff, &yoff); X (void) strcat(incl, addlifeext(incl)); X if (!do_loadfile(incl, hotx + xoff, hoty + yoff)) X return(0); X break; X X case 'L': X (void) sscanf(buf+2, " %d %d %[^\n]", &lx, &ly, incl); X XDrawString(disp, lifew, ntextgc, X RXPOS(xoff+lx, xpos), RYPOS(yoff+ly, ypos), X incl, strlen(incl)); X break; X X X default: X break; X } X } X else if (loadmode == M_ABSOLUTE && sscanf(buf,"%d %d\n",&x,&y)==2) X { X addcell(xpos + x, ypos + y); X numcells++; X } X else if (loadmode == M_RELATIVE && sscanf(buf,"%d %d\n",&x,&y)==2) X { X addcell(hotx + xoff + x, hoty + yoff + y); X numcells++; X } X else /* loadmode == M_PICTURE */ X { X char *cp; X X for (cp = buf; *cp; cp++) X if (*cp == '*') X { X addcell(hotx + xoff + (cp-buf), X hoty + yoff + linect); X numcells++; X } X } X linect++; X } X fclose(loadfl); X return 1; X } else X return 0; X} X X Xvoid loadfile(){ X X char outbuf[100]; X X strcpy(inpbuf,"Load from:"); X minbuflen=10; X strcat(inpbuf,loadirbuf); X XClearWindow(disp,inputw); X XDrawString(disp, inputw, ntextgc,ICOORDS(0,0),inpbuf, strlen(inpbuf)); X X getxstring(); X X strcpy(outbuf,checktilda(inpbuf+10)); X inpbuf[0]=0; X strcat(outbuf,addlifeext(outbuf)); X if (do_loadfile(outbuf, XPOS(event.xmotion.x, xpos), YPOS(event.xmotion.y, ypos))) { X/* scale = 1; */ X XClearWindow(disp,lifew); X redrawscreen(); X } X else{ X XClearWindow(disp,inputw); X XDrawString(disp,inputw,ntextgc,ICOORDS(0,0),SYSERR,strlen(SYSERR)); X } X} X END_OF_xlife-2.0/file.c if test 5219 -ne `wc -c <xlife-2.0/file.c`; then echo shar: \"xlife-2.0/file.c\" unpacked with wrong size! fi # end of overwriting check fi if test -f xlife-2.0/icon.h -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"xlife-2.0/icon.h\" else echo shar: Extracting \"xlife-2.0/icon.h\" \(3319 characters\) sed "s/^X//" >xlife-2.0/icon.h <<'END_OF_xlife-2.0/icon.h' X#define icon_width 64 X#define icon_height 64 X#define icon_x_hot -1 X#define icon_y_hot -1 Xstatic char icon_bits[] = { X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x30, 0x01, X 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x38, 0x03, 0x00, 0x00, 0x00, 0x00, X 0xc0, 0x01, 0x1c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x0e, 0x03, X 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x03, 0x18, 0x1e, 0x78, 0x00, X 0x00, 0x8e, 0x03, 0x03, 0x18, 0x3f, 0xfc, 0x00, 0x00, 0xdc, 0x01, 0x03, X 0x80, 0x03, 0xce, 0x01, 0x00, 0xf8, 0x00, 0x03, 0x80, 0x01, 0x86, 0x01, X 0x00, 0x70, 0x00, 0x03, 0x98, 0x01, 0x86, 0x01, 0x00, 0xf8, 0x00, 0x03, X 0x98, 0x01, 0x86, 0x01, 0x00, 0xdc, 0x01, 0x03, 0x98, 0x01, 0xfe, 0x01, X 0x00, 0x8e, 0x03, 0x03, 0x98, 0x3f, 0xfe, 0x00, 0x00, 0x07, 0x07, 0x03, X 0x98, 0x1f, 0x06, 0x00, 0x80, 0x03, 0x0e, 0x03, 0x98, 0x01, 0x06, 0x00, X 0xc0, 0x01, 0x1c, 0x03, 0x98, 0x01, 0x0e, 0x00, 0xe0, 0x00, 0x38, 0xff, X 0x98, 0x01, 0xfc, 0x01, 0x60, 0x00, 0x30, 0xff, 0x99, 0x01, 0xf8, 0x00, X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, X 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, X 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, X 0x00, 0xe0, 0xbd, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xbd, 0x07, X 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xbd, 0x07, 0x00, 0x00, 0x00, 0x00, X 0x00, 0xe0, 0xbd, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, X 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xf7, X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xf7, 0x00, 0x00, 0x00, 0x00, X 0x00, 0x00, 0x80, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xf7, X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x7b, 0x00, 0x00, X 0x00, 0x00, 0x00, 0x00, 0xc0, 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, X 0xc0, 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x7b, 0x00, 0x00, X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, X 0xc0, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x0f, 0x00, X 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, X 0xc0, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, X 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, X 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, X 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; END_OF_xlife-2.0/icon.h if test 3319 -ne `wc -c <xlife-2.0/icon.h`; then echo shar: \"xlife-2.0/icon.h\" unpacked with wrong size! fi # end of overwriting check fi if test -f xlife-2.0/lifeconv.c -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"xlife-2.0/lifeconv.c\" else echo shar: Extracting \"xlife-2.0/lifeconv.c\" \(5093 characters\) sed "s/^X//" >xlife-2.0/lifeconv.c <<'END_OF_xlife-2.0/lifeconv.c' X/* X * lifeconv.c -- image format conversion routines for Xlife X * X * By Eric S. Raymond (eric@snark.uu.net) X * X * A leading -[RAP] argument forces the conversion format. Otherwise X * it uses the following rules: X * X * 1) If the image won't fit in a 1000x876 screen, leave it alone (thus, X * very large patterns like the breeder are left in #A format). X * X * 2) Otherwise, convert it to whichever of `P' or `R' format takes up less X * disk space. Offsets are generated in the header so that the hot spot is X * at the center of the bounding rectangle. X * X * With no file arguments, lifeconv acts as a filter. If given file arguments, X * the files will be converted to the new format in place. X */ X#include <stdio.h> X X#define MARK '*' X#define SPACE '.' X X/* XMAX should be divisible by 8 (bits in a char) X * XMAX x YMAX should be big enough to handle anything reasonable X */ X#define XMAX 2000 X#define YMAX 2000 X X/* image data */ Xstatic char image[XMAX >> 3][YMAX]; Xstatic int xmin, ymin, xmax, ymax, numcells; Xstatic int xoff, yoff; X Xstatic void mark(x, y) X/* mark a cell and update the bounding-box data */ Xint x, y; X{ X X image[x >> 3][y] |= 1 << (0x07 - (x & 0x07)); X numcells++; X X if (x < xmin) X xmin = x; X if (y < ymin) X ymin = y; X if (x > xmax) X xmax = x; X if (y > ymax) X ymax = y; X} X Xstatic int cvimage(name, ifp, mode, ofp) X/* read in an image in A, R or P form */ Xchar *name; XFILE *ifp; Xchar mode; XFILE *ofp; X{ X char buf[BUFSIZ]; X int x, y, i, j, xcorner, ycorner; X char inmode = 'A'; X X /* read in a complete image file in any mode */ X bzero(image, sizeof(image)); X numcells = 0; X xmin = XMAX; ymin = YMAX; xmax = 0; ymax = 0; X while (fgets(buf, BUFSIZ, ifp) != (char *)NULL) X { X extern char *strchr(); X X if (buf[0] == '#') X { X xoff = yoff = 0; X X if (strchr("RAI", buf[1]) != (char *)NULL) X { X inmode = buf[1]; X (void) sscanf(buf + 2, "%d %d", &xoff, &yoff); X } X else { X if (buf[1] == '#') X (void) fputs(buf, ofp); X } X X } X else if ((inmode=='A'||inmode=='R') && sscanf(buf, "%d %d", &x,&y)==2) X { X if (x >= XMAX || y >= YMAX) X { X /* X * If you get this message, recompile with larger X * XMAX and YMAX values X */ X (void) fprintf(stderr, X "%s: point %d = (%d,%d) out of bounds\n", X name, numcells, x, y); X return(-1); X } X else if (inmode == 'R') X mark(XMAX/2 + xoff + x, YMAX/2 + yoff + y); X else X mark(xoff + x, yoff + y); X } X else /* inmode == 'P' */ X { X char *cp; X X for (cp = buf; *cp; cp++) X if (*cp == MARK) X mark(xoff + cp - buf, yoff + y); X y++; X } X } X X /* if the mode is \0, we go for the shortest output form */ X if (mode == '\0') X if (((ymax - ymin + 1) * (xmax - xmin + 1)) > numcells * 8) X mode = 'R'; X else X mode = 'P'; X X /* undo the hack to accept negative indices */ X if (inmode == 'R' && mode != 'A') X { X xcorner = XMAX/2; ycorner = YMAX/2; X xmin -= XMAX/2; ymin -= YMAX/2; X xmax -= XMAX/2; ymax -= YMAX/2; X } X else X xcorner = ycorner = 0; X X /* here goes the write side */ X if (mode == 'P') X { X (void) fprintf(ofp, "#P %d %d\n", -(xmax-xmin)/2, -(ymax-ymin)/2); X for (i = ymin; i <= ymax; i++) X { X for (j = xmin; j <= xmax; j++) X if (image[(j + xcorner) >> 3][i + ycorner] & (1 << (0x07 - ((j+xcorner) & 0x07)))) X (void) fputc(MARK, ofp); X else X (void) fputc(SPACE, ofp); X (void) fputc('\n', ofp); X } X } X else if (mode == 'R') X { X int cx = xmin + (xmax-xmin)/2; X int cy = ymin + (ymax-ymin)/2; X X (void) fprintf(ofp, "#R\n"); X for (i = ymin; i <= ymax; i++) X for (j = xmin; j <= xmax; j++) X if (image[(j + xcorner) >> 3][i + ycorner] & (1 << (0x07 - ((j+xcorner & 0x07))))) X (void) fprintf(ofp, "%3d %3d\n", j - cx, i - cy); X } X else /* if (mode == 'A') */ X { X (void) fprintf(ofp, "#A\n"); X for (i = ymin; i <= ymax; i++) X for (j = xmin; j <= xmax; j++) X if (image[(j + xcorner) >> 3][i + ycorner] & (1 << (0x07 - ((j+xcorner & 0x07))))) X (void) fprintf(ofp, "%3d %3d\n", xoff + j, yoff + i); X } X X return(mode); X} X Xmain(argc, argv) Xint argc; Xchar **argv; X{ X char convmode = '\0'; X X if (argc == 1) X (void) cvimage("stdin", stdin, convmode, stdout); X else X { X char tmpfile[BUFSIZ]; X FILE *ifp, *ofp; X X if (argv[1][0] == '-' && strchr("RAP", argv[1][1]) != (char *)NULL) X { X convmode = argv[1][1]; X argv++, argc--; X } X X (void) strcpy(tmpfile, ".lfcnvXXXXXX"); X (void) mktemp(tmpfile); X while (++argv, --argc) X if ((ifp = fopen(argv[0], "r")) == (FILE *)NULL) X perror(argv[0]); X else if ((ofp = fopen(tmpfile, "w")) == (FILE *)NULL) X perror(tmpfile); X else X { X char oldname[BUFSIZ]; X int status = cvimage(argv[0], ifp, convmode, ofp); X X (void) fclose(ifp); X (void) fclose(ofp); X if (status < 0) X continue; X X (void) fprintf(stderr, "%s: %c\n", argv[0], status); X X if (unlink(argv[0]) != 0) X perror(argv[0]); X else if (link(tmpfile, argv[0]) != 0) X perror(argv[0]); X else if (unlink(tmpfile) != 0) X perror(argv[0]); X } X } X} X END_OF_xlife-2.0/lifeconv.c if test 5093 -ne `wc -c <xlife-2.0/lifeconv.c`; then echo shar: \"xlife-2.0/lifeconv.c\" unpacked with wrong size! fi # end of overwriting check fi if test -f xlife-2.0/patterns/background1.life -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"xlife-2.0/patterns/background1.life\" else echo shar: Extracting \"xlife-2.0/patterns/background1.life\" \(3551 characters\) sed "s/^X//" >xlife-2.0/patterns/background1.life <<'END_OF_xlife-2.0/patterns/background1.life' X#P -29 -29 X............**.**..........**.**..........**.**............ X...........*.*.*.*........*.*.*.*........*.*.*.*........... X...........**...**........**...**........**...**........... X........................................................... X...........**...**........**...**........**...**........... X...........*.....*........*.....*........*.....*........... X...........*.....*........*.....*........*.....*........... X...........*.....*........*.....*........*.....*........... X...........*.....*........*.....*........*.....*........... X...........**...**........**...**........**...**........... X........................................................... X.**.******..**.**..******..**.**..******..**.**..******.**. X*.*.*....*.*.*.*.*.*....*.*.*.*.*.*....*.*.*.*.*.*....*.*.* X**.........**...**........**...**........**...**.........** X........................................................... X**.........**...**........**...**........**...**.........** X*.*.*....*.*.*.*.*.*....*.*.*.*.*.*....*.*.*.*.*.*....*.*.* X.**.******..**.**..******..**.**..******..**.**..******.**. X........................................................... X...........**...**........**...**........**...**........... X...........*.....*........*.....*........*.....*........... X...........*.....*........*.....*........*.....*........... X...........*.....*........*.....*........*.....*........... X...........*.....*........*.....*........*.....*........... X...........**...**........**...**........**...**........... X........................................................... X.**.******..**.**..******..**.**..******..**.**..******.**. X*.*.*....*.*.*.*.*.*....*.*.*.*.*.*....*.*.*.*.*.*....*.*.* X**.........**...**........**...**........**...**.........** X........................................................... X**.........**...**........**...**........**...**.........** X*.*.*....*.*.*.*.*.*....*.*.*.*.*.*....*.*.*.*.*.*....*.*.* X.**.******..**.**..******..**.**..******..**.**..******.**. X........................................................... X...........**...**........**...**........**...**........... X...........*.....*........*.....*........*.....*........... X...........*.....*........*.....*........*.....*........... X...........*.....*........*.....*........*.....*........... X...........*.....*........*.....*........*.....*........... X...........**...**........**...**........**...**........... X........................................................... X.**.******..**.**..******..**.**..******..**.**..******.**. X*.*.*....*.*.*.*.*.*....*.*.*.*.*.*....*.*.*.*.*.*....*.*.* X**.........**...**........**...**........**...**.........** X........................................................... X**.........**...**........**...**........**...**.........** X*.*.*....*.*.*.*.*.*....*.*.*.*.*.*....*.*.*.*.*.*....*.*.* X.**.******..**.**..******..**.**..******..**.**..******.**. X........................................................... X...........**...**........**...**........**...**........... X...........*.....*........*.....*........*.....*........... X...........*.....*........*.....*........*.....*........... X...........*.....*........*.....*........*.....*........... X...........*.....*........*.....*........*.....*........... X...........**...**........**...**........**...**........... X........................................................... X...........**...**........**...**........**...**........... X...........*.*.*.*........*.*.*.*........*.*.*.*........... X............**.**..........**.**..........**.**............ END_OF_xlife-2.0/patterns/background1.life if test 3551 -ne `wc -c <xlife-2.0/patterns/background1.life`; then echo shar: \"xlife-2.0/patterns/background1.life\" unpacked with wrong size! fi # end of overwriting check fi if test -f xlife-2.0/patterns/billiards.life -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"xlife-2.0/patterns/billiards.life\" else echo shar: Extracting \"xlife-2.0/patterns/billiards.life\" \(7074 characters\) sed "s/^X//" >xlife-2.0/patterns/billiards.life <<'END_OF_xlife-2.0/patterns/billiards.life' X#A X58 178 X62 178 X57 179 X59 179 X60 179 X62 179 X57 180 X61 180 X56 181 X57 181 X61 181 X63 181 X62 182 X63 182 X55 175 X55 176 X57 174 X58 174 X60 174 X61 174 X58 175 X60 175 X62 175 X56 176 X60 176 X62 176 X60 177 X62 177 X63 177 X57 146 X59 146 X60 146 X57 147 X59 147 X60 147 X57 148 X59 149 X60 149 X57 150 X58 150 X60 150 X56 151 X56 152 X55 146 X52 148 X53 148 X52 149 X55 149 X53 150 X54 150 X55 150 X53 152 X54 152 X53 153 X55 153 X56 145 X55 145 X80 183 X80 184 X79 183 X79 184 X80 186 X81 186 X82 186 X86 186 X87 186 X83 187 X85 187 X87 187 X83 188 X85 188 X83 189 X85 189 X86 189 X80 190 X81 190 X82 190 X80 192 X80 193 X74 186 X75 186 X79 186 X74 187 X76 187 X78 187 X76 188 X78 188 X79 188 X75 189 X76 189 X78 189 X79 190 X79 192 X79 193 X78 162 X79 162 X76 151 X77 151 X76 152 X77 152 X80 155 X80 156 X80 157 X82 157 X83 157 X80 158 X82 158 X83 158 X76 154 X77 154 X78 154 X79 154 X72 155 X73 155 X75 155 X78 155 X72 156 X73 156 X75 156 X77 156 X75 157 X79 157 X75 158 X76 159 X77 159 X78 159 X79 159 X78 161 X79 161 X69 130 X71 130 X68 131 X69 131 X71 131 X69 132 X69 133 X70 134 X71 134 X73 128 X74 128 X78 128 X79 128 X75 129 X77 129 X81 130 X83 130 X81 131 X83 131 X84 131 X80 132 X83 132 X83 133 X80 134 X81 134 X82 134 X80 135 X75 130 X77 130 X75 131 X77 131 X72 132 X73 132 X74 132 X78 132 X79 132 X72 134 X72 135 X81 124 X82 124 X81 125 X83 125 X83 126 X82 127 X83 127 X85 127 X86 127 X83 128 X85 128 X86 128 X81 129 X83 129 X70 124 X71 124 X69 125 X71 125 X69 126 X66 127 X67 127 X69 127 X70 127 X66 128 X67 128 X69 128 X69 129 X71 129 X127 124 X127 125 X126 126 X127 126 X131 122 X128 123 X131 123 X129 124 X130 124 X129 119 X130 119 X129 120 X131 120 X133 120 X134 120 X131 121 X133 121 X134 121 X150 122 X150 123 X147 124 X148 124 X150 124 X151 124 X147 125 X149 125 X150 126 X151 126 X151 121 X152 120 X153 121 X152 122 X154 122 X156 122 X157 122 X154 123 X156 123 X157 123 X154 124 X154 125 X152 126 X153 126 X152 128 X153 128 X152 129 X153 129 X119 142 X119 143 X121 146 X122 146 X124 146 X122 147 X125 147 X126 147 X127 147 X122 148 X123 149 X124 149 X125 149 X125 150 X128 146 X130 146 X131 146 X130 147 X130 148 X132 148 X131 149 X132 149 X123 139 X124 139 X122 140 X124 140 X122 141 X120 142 X122 142 X123 142 X120 143 X122 143 X126 143 X122 144 X124 144 X122 145 X124 145 X128 139 X129 139 X128 140 X130 140 X130 141 X129 142 X130 142 X132 142 X133 142 X130 143 X132 143 X133 143 X128 144 X130 144 X128 145 X130 145 X151 145 X154 141 X155 141 X154 142 X155 143 X154 144 X155 144 X152 145 X156 145 X157 145 X153 146 X154 146 X155 146 X158 146 X156 147 X157 147 X155 148 X155 149 X153 150 X154 150 X152 151 X152 152 X150 146 X150 147 X151 148 X146 149 X147 149 X149 149 X151 149 X146 150 X148 150 X149 150 X151 150 X150 151 X150 152 X151 153 X130 160 X131 160 X129 161 X131 161 X124 170 X126 170 X124 171 X127 171 X123 172 X124 172 X123 162 X124 162 X124 163 X127 163 X124 164 X126 164 X121 165 X122 165 X124 165 X126 165 X121 166 X122 166 X124 166 X126 166 X124 167 X121 168 X122 168 X124 168 X121 169 X122 169 X124 169 X127 169 X128 170 X130 170 X128 171 X130 171 X129 172 X129 173 X131 173 X130 174 X131 174 X129 162 X128 163 X130 163 X130 164 X128 165 X130 165 X132 165 X133 165 X128 166 X130 166 X132 166 X133 166 X130 167 X129 168 X130 168 X132 168 X133 168 X130 169 X132 169 X133 169 X160 170 X156 165 X157 165 X156 166 X158 166 X157 167 X160 164 X161 164 X160 165 X160 166 X160 167 X162 167 X163 167 X160 168 X162 168 X163 168 X160 169 X152 170 X158 170 X153 171 X158 171 X159 171 X152 172 X156 172 X157 172 X157 173 X152 174 X153 174 X154 174 X155 174 X156 174 X153 176 X154 176 X153 177 X154 177 X151 170 X151 171 X150 174 X151 174 X150 175 X174 118 X175 118 X173 119 X174 120 X175 120 X175 130 X170 122 X174 122 X175 122 X169 123 X171 123 X173 123 X169 124 X171 124 X173 124 X168 125 X169 125 X171 125 X173 125 X174 125 X171 126 X171 127 X173 127 X174 127 X175 127 X172 128 X173 129 X174 129 X175 129 X176 122 X178 122 X180 122 X176 123 X178 123 X180 123 X178 124 X180 124 X181 124 X178 125 X178 126 X176 127 X177 127 X176 117 X176 118 X176 120 X177 120 X178 120 X179 121 X184 147 X175 151 X178 146 X179 146 X181 146 X183 146 X176 147 X177 147 X181 147 X183 147 X176 148 X177 148 X181 148 X181 149 X176 150 X177 150 X178 150 X179 150 X180 150 X176 152 X177 152 X178 152 X178 153 X182 144 X178 145 X179 145 X181 145 X183 145 X184 167 X184 168 X183 167 X183 168 X184 179 X184 180 X183 179 X183 180 X181 170 X182 170 X183 170 X180 171 X180 172 X177 173 X178 173 X180 173 X177 174 X178 174 X180 174 X182 174 X183 174 X180 175 X182 175 X183 175 X180 176 X181 177 X182 177 X183 177 X184 170 X185 170 X186 170 X187 171 X184 172 X185 172 X187 172 X184 173 X185 173 X187 173 X189 173 X190 173 X187 174 X189 174 X190 174 X187 175 X187 176 X184 177 X185 177 X186 177 X175 190 X175 191 X173 193 X174 193 X175 193 X178 190 X181 190 X176 191 X177 191 X178 191 X179 191 X180 191 X181 191 X176 193 X177 193 X178 193 X179 193 X180 193 X181 193 X182 193 X183 193 X172 194 X172 195 X169 196 X170 196 X172 196 X170 197 X172 197 X174 197 X175 197 X170 198 X172 198 X174 198 X175 198 X169 199 X170 199 X172 199 X170 200 X172 200 X174 200 X175 200 X170 201 X172 201 X174 201 X175 201 X176 195 X177 195 X179 195 X180 195 X176 196 X177 196 X179 196 X180 196 X181 197 X182 197 X181 198 X182 198 X181 200 X182 200 X181 201 X182 201 X184 202 X186 202 X187 202 X184 203 X184 204 X184 194 X184 195 X184 196 X186 196 X187 196 X184 197 X186 197 X184 198 X186 198 X184 199 X186 199 X187 199 X184 200 X186 200 X184 201 X186 201 X169 202 X170 202 X172 202 X172 203 X172 204 X173 205 X174 205 X175 205 X175 207 X175 208 X176 202 X177 202 X179 202 X180 202 X176 203 X177 203 X179 203 X180 203 X176 205 X177 205 X178 205 X179 205 X180 205 X181 205 X182 205 X183 205 X176 207 X177 207 X178 207 X179 207 X180 207 X181 207 X178 208 X181 208 X150 203 X150 204 X151 204 X156 202 X157 202 X152 203 X153 203 X155 203 X153 204 X155 204 X154 205 X153 198 X154 198 X152 199 X155 199 X154 200 X156 200 X152 201 X154 201 X156 201 X144 194 X151 200 X151 201 X138 194 X140 194 X137 195 X138 195 X140 195 X142 195 X143 195 X139 196 X141 196 X139 197 X141 197 X140 198 X144 193 X140 190 X140 191 X141 191 X142 191 X138 192 X139 192 X143 192 X137 193 X140 193 X142 193 X128 202 X128 203 X129 203 X130 204 X128 205 X129 205 X123 202 X126 202 X124 203 X125 204 X126 204 X127 205 X127 206 X128 201 X120 199 X122 199 X123 199 X120 200 X121 200 X123 200 X126 200 X127 200 X123 201 X125 201 X112 194 X112 189 X112 190 X112 191 X113 191 X114 192 X113 193 X106 186 X107 186 X106 187 X109 187 X110 187 X107 188 X108 188 X111 188 X110 189 X107 190 X108 190 X106 191 X109 191 X110 191 X106 192 X107 192 X111 192 X111 193 X107 168 X108 168 X107 169 X109 169 X101 172 X102 172 X101 173 X102 173 X104 170 X105 170 X107 170 X109 170 X104 171 X107 171 X109 171 X110 171 X104 172 X109 172 X104 173 X105 173 X106 173 X107 173 X109 173 X108 174 X106 175 X106 176 X107 176 X102 146 X102 147 X99 148 X100 148 X102 148 X99 149 X101 149 X103 149 X101 150 X103 150 X101 151 X102 152 X103 153 X101 145 X102 145 X105 146 X106 146 X104 147 X107 147 X105 148 X107 148 X107 149 X108 149 X105 150 X106 150 X109 150 X104 151 X108 151 X109 151 X104 152 X112 130 X115 130 X112 131 X114 131 X113 132 X112 126 X113 127 X113 128 X113 129 X114 129 X108 123 X107 124 X109 124 X106 125 X109 125 X110 125 X111 125 X107 126 X108 126 X109 127 X111 127 X109 128 X110 129 X111 129 X110 208 X111 208 X106 209 X107 209 X110 209 X105 210 X108 210 X110 210 X104 211 X106 211 X108 211 X110 211 X111 211 X105 212 X110 212 X106 213 X107 213 X108 213 X110 213 X109 214 X108 215 X108 216 X109 216 X89 218 X89 219 X88 220 X86 218 X87 219 X86 212 X87 212 X86 213 X87 214 X87 216 X86 217 X89 213 X90 213 X88 214 X91 214 X90 215 X92 215 X88 216 X92 216 X88 217 X90 217 X91 217 X72 210 X72 211 X69 207 X70 207 X68 208 X71 208 X66 209 X69 209 X71 209 X66 210 X67 210 X69 210 X71 210 X66 212 X67 212 X69 212 X70 212 X67 213 X69 213 X67 214 X69 214 X68 215 END_OF_xlife-2.0/patterns/billiards.life if test 7074 -ne `wc -c <xlife-2.0/patterns/billiards.life`; then echo shar: \"xlife-2.0/patterns/billiards.life\" unpacked with wrong size! fi # end of overwriting check fi if test -f xlife-2.0/patterns/blockpusher4.life -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"xlife-2.0/patterns/blockpusher4.life\" else echo shar: Extracting \"xlife-2.0/patterns/blockpusher4.life\" \(6867 characters\) sed "s/^X//" >xlife-2.0/patterns/blockpusher4.life <<'END_OF_xlife-2.0/patterns/blockpusher4.life' X#R X-31 -78 X-31 -77 X-30 -77 X-30 -76 X-29 -76 X-15 -76 X-14 -76 X-40 -75 X-39 -75 X-30 -75 X-29 -75 X-28 -75 X-16 -75 X-15 -75 X-14 -75 X-40 -74 X-39 -74 X-30 -74 X-29 -74 X-19 -74 X-17 -74 X-16 -74 X 10 -74 X 11 -74 X-59 -73 X-58 -73 X-31 -73 X-30 -73 X-19 -73 X-16 -73 X -6 -73 X -5 -73 X 10 -73 X 11 -73 X-59 -72 X-58 -72 X-31 -72 X-19 -72 X-17 -72 X-16 -72 X -6 -72 X -5 -72 X-27 -71 X-16 -71 X-15 -71 X-14 -71 X-27 -70 X-25 -70 X-15 -70 X-14 -70 X-27 -69 X-26 -69 X -9 -68 X -8 -68 X -9 -67 X -8 -67 X -7 -67 X-23 -66 X -7 -66 X -6 -66 X -4 -66 X-25 -65 X-23 -65 X -7 -65 X -4 -65 X 2 -65 X 3 -65 X 7 -65 X 8 -65 X 12 -65 X 13 -65 X-61 -64 X-60 -64 X-56 -64 X-55 -64 X-34 -64 X-26 -64 X-24 -64 X-13 -64 X -7 -64 X -6 -64 X -4 -64 X 2 -64 X 3 -64 X 10 -64 X-61 -63 X-59 -63 X-57 -63 X-55 -63 X-35 -63 X-27 -63 X-24 -63 X-12 -63 X -9 -63 X -8 -63 X -7 -63 X 7 -63 X 13 -63 X-60 -62 X-59 -62 X-58 -62 X-57 -62 X-56 -62 X-35 -62 X-34 -62 X-33 -62 X-26 -62 X-24 -62 X-14 -62 X-13 -62 X-12 -62 X -9 -62 X -8 -62 X 8 -62 X 9 -62 X 11 -62 X 12 -62 X-59 -61 X-58 -61 X-57 -61 X-30 -61 X-29 -61 X-25 -61 X-23 -61 X 9 -61 X 11 -61 X-58 -60 X-31 -60 X-29 -60 X-23 -60 X -1 -60 X 0 -60 X 10 -60 X-70 -59 X-69 -59 X-48 -59 X-47 -59 X-31 -59 X -1 -59 X 0 -59 X 10 -59 X-70 -58 X-69 -58 X-48 -58 X-47 -58 X-32 -58 X-31 -58 X-42 -56 X -5 -56 X-42 -55 X-40 -55 X -7 -55 X -5 -55 X-42 -54 X-41 -54 X -6 -54 X -5 -54 X-70 -53 X-69 -53 X-68 -53 X-57 -53 X-55 -53 X-10 -53 X -9 -53 X 6 -53 X 8 -53 X-70 -52 X-69 -52 X-68 -52 X-56 -52 X-55 -52 X-39 -52 X-38 -52 X-11 -52 X -9 -52 X 6 -52 X 7 -52 X-71 -51 X-67 -51 X-56 -51 X-39 -51 X-37 -51 X-11 -51 X 7 -51 X 11 -51 X 12 -51 X 13 -51 X-37 -50 X-12 -50 X-11 -50 X 10 -50 X 14 -50 X-72 -49 X-71 -49 X-67 -49 X-66 -49 X-37 -49 X-36 -49 X 9 -49 X 15 -49 X-61 -48 X-60 -48 X-59 -48 X 9 -48 X 10 -48 X 12 -48 X 14 -48 X 15 -48 X-62 -47 X-58 -47 X-32 -47 X-31 -47 X-63 -46 X-57 -46 X-49 -46 X-31 -46 X 0 -46 X-62 -45 X-58 -45 X-48 -45 X-47 -45 X-31 -45 X-29 -45 X-21 -45 X -2 -45 X -1 -45 X-61 -44 X-60 -44 X-59 -44 X-49 -44 X-48 -44 X-30 -44 X-29 -44 X-21 -44 X-20 -44 X-19 -44 X-18 -44 X -1 -44 X 0 -44 X-61 -43 X-60 -43 X-59 -43 X-20 -43 X-19 -43 X-18 -43 X-17 -43 X-11 -43 X-10 -43 X-20 -42 X-17 -42 X-11 -42 X-10 -42 X-70 -41 X-68 -41 X-20 -41 X-19 -41 X-18 -41 X-17 -41 X-69 -40 X-68 -40 X-21 -40 X-20 -40 X-19 -40 X-18 -40 X 11 -40 X 12 -40 X-69 -39 X-60 -39 X-59 -39 X-21 -39 X 11 -39 X 12 -39 X 40 -39 X 41 -39 X-60 -38 X-59 -38 X 40 -38 X 41 -38 X 11 -37 X 12 -37 X 32 -37 X 33 -37 X-74 -36 X-73 -36 X-69 -36 X-68 -36 X 12 -36 X 32 -36 X-74 -35 X-73 -35 X-69 -35 X-68 -35 X 12 -35 X 14 -35 X 22 -35 X 23 -35 X 30 -35 X 32 -35 X-62 -34 X-51 -34 X 13 -34 X 14 -34 X 21 -34 X 23 -34 X 30 -34 X 31 -34 X-72 -33 X-71 -33 X-70 -33 X-61 -33 X-60 -33 X-53 -33 X-52 -33 X-51 -33 X 20 -33 X 21 -33 X 22 -33 X-72 -32 X-71 -32 X-70 -32 X-62 -32 X-61 -32 X-54 -32 X -8 -32 X -7 -32 X 19 -32 X 20 -32 X 21 -32 X 39 -32 X 40 -32 X 41 -32 X-71 -31 X-54 -31 X-53 -31 X -7 -31 X 20 -31 X 21 -31 X 22 -31 X -7 -30 X -5 -30 X 4 -30 X 5 -30 X 21 -30 X 23 -30 X 39 -30 X 41 -30 X -6 -29 X -5 -29 X 2 -29 X 5 -29 X 22 -29 X 23 -29 X 38 -29 X 39 -29 X 40 -29 X 41 -29 X 42 -29 X 1 -28 X 37 -28 X 38 -28 X 42 -28 X 43 -28 X 1 -27 X 13 -27 X 14 -27 X 37 -27 X 38 -27 X 42 -27 X 43 -27 X-55 -26 X-53 -26 X-44 -26 X-43 -26 X 1 -26 X 13 -26 X 14 -26 X-71 -25 X-70 -25 X-54 -25 X-53 -25 X-45 -25 X-43 -25 X 2 -25 X 5 -25 X-71 -24 X-70 -24 X-54 -24 X-43 -24 X 4 -24 X 5 -24 X-61 -23 X-60 -23 X 10 -23 X-61 -22 X-60 -22 X-40 -22 X 8 -22 X 9 -22 X 10 -22 X-66 -21 X-65 -21 X-40 -21 X-39 -21 X-38 -21 X 7 -21 X-66 -20 X-65 -20 X-37 -20 X 7 -20 X 8 -20 X 42 -20 X 43 -20 X-38 -19 X-37 -19 X-25 -19 X-24 -19 X 42 -19 X-52 -18 X-51 -18 X-50 -18 X-25 -18 X-24 -18 X 43 -18 X 44 -18 X 45 -18 X-50 -17 X 45 -17 X-51 -16 X 57 -16 X 58 -16 X 57 -15 X 46 -14 X 48 -14 X 55 -14 X 57 -14 X 69 -14 X 70 -14 X 45 -13 X 48 -13 X 55 -13 X 56 -13 X 69 -13 X 70 -13 X 36 -12 X 37 -12 X 44 -12 X 45 -12 X-59 -11 X-58 -11 X-38 -11 X-37 -11 X-33 -11 X-32 -11 X 36 -11 X 37 -11 X 42 -11 X 43 -11 X 47 -11 X-60 -10 X-58 -10 X 44 -10 X 45 -10 X-69 -9 X-68 -9 X-64 -9 X-63 -9 X-58 -9 X-38 -9 X-32 -9 X 45 -9 X 48 -9 X-67 -8 X-66 -8 X-65 -8 X 46 -8 X 48 -8 X-68 -7 X-64 -7 X-37 -7 X-36 -7 X-34 -7 X-33 -7 X-67 -6 X-65 -6 X-35 -6 X-66 -5 X-65 -3 X-64 -3 X-63 -3 X 46 -3 X-65 -2 X-64 -2 X-63 -2 X 45 -2 X 66 -2 X 67 -2 X 71 -2 X 72 -2 X-36 -1 X-35 -1 X 45 -1 X 46 -1 X 47 -1 X 68 -1 X 69 -1 X 70 -1 X-36 0 X-35 0 X -8 0 X 67 0 X 71 0 X-10 1 X -8 1 X 68 1 X 70 1 X-67 2 X-66 2 X-62 2 X-61 2 X-11 2 X -9 2 X 69 2 X-66 3 X-65 3 X-64 3 X-63 3 X-62 3 X-12 3 X -9 3 X-65 4 X-64 4 X-63 4 X-11 4 X -9 4 X-64 5 X-16 5 X-15 5 X-10 5 X -8 5 X 1 5 X 2 5 X 71 5 X 72 5 X-54 6 X-53 6 X-17 6 X-15 6 X -8 6 X 1 6 X 3 6 X 71 6 X-54 7 X-53 7 X-17 7 X 3 7 X 72 7 X 73 7 X 74 7 X-18 8 X-17 8 X 3 8 X 4 8 X 74 8 X-65 13 X-64 13 X-65 14 X-64 14 X-27 14 X-26 14 X 56 14 X 57 14 X-27 15 X-26 15 X 55 15 X 57 15 X-17 16 X-16 16 X 57 16 X-57 17 X-56 17 X-52 17 X-51 17 X-31 17 X-30 17 X-17 17 X-16 17 X-31 18 X-56 19 X-52 19 X-33 19 X-31 19 X-55 20 X-54 20 X-53 20 X-33 20 X-32 20 X-55 21 X-54 21 X-53 21 X-29 23 X-28 23 X-24 23 X-23 23 X-52 24 X-28 24 X-27 24 X-26 24 X-25 24 X-24 24 X-18 24 X-17 24 X-16 24 X -8 24 X -7 24 X-53 25 X-52 25 X-51 25 X-27 25 X-26 25 X-25 25 X-19 25 X-15 25 X -9 25 X -7 25 X-54 26 X-50 26 X-42 26 X-41 26 X-26 26 X -7 26 X-52 27 X-42 27 X-41 27 X-20 27 X-14 27 X 16 27 X-55 28 X-49 28 X-20 28 X-19 28 X-15 28 X-14 28 X 15 28 X-55 29 X-49 29 X 15 29 X 16 29 X 17 29 X-54 30 X-50 30 X-53 31 X-52 31 X-51 31 X-29 35 X-28 35 X-27 35 X-29 37 X-27 37 X-30 38 X-29 38 X-28 38 X-27 38 X-26 38 X-31 39 X-30 39 X-26 39 X-25 39 X-52 40 X-51 40 X-31 40 X-30 40 X-26 40 X-25 40 X-18 40 X-17 40 X-13 40 X-12 40 X 0 40 X 47 40 X 48 40 X-52 41 X-51 41 X -1 41 X 0 41 X 22 41 X 23 41 X 47 41 X 48 41 X-18 42 X-12 42 X -1 42 X 1 42 X 22 42 X 10 43 X 20 43 X 22 43 X-17 44 X-16 44 X-14 44 X-13 44 X 9 44 X 11 44 X 20 44 X 21 44 X 26 44 X 27 44 X-15 45 X -2 45 X 7 45 X 8 45 X 12 45 X 25 45 X 27 45 X -2 46 X -1 46 X 0 46 X 1 46 X 7 46 X 8 46 X 12 46 X 27 46 X -1 47 X 0 47 X 1 47 X 2 47 X 7 47 X 8 47 X 12 47 X-29 48 X-28 48 X-18 48 X-17 48 X-12 48 X-11 48 X -1 48 X 2 48 X 9 48 X 11 48 X-29 49 X-28 49 X-17 49 X-12 49 X-11 49 X -1 49 X 0 49 X 1 49 X 2 49 X 10 49 X-20 50 X-19 50 X-18 50 X -2 50 X -1 50 X 0 50 X 1 50 X-20 51 X -2 51 X 13 54 X 14 54 X 15 54 X 11 56 X 17 56 X 11 57 X 17 57 X 11 58 X 17 58 X 27 60 X 28 60 X 27 61 X 19 62 X 20 62 X 25 62 X 27 62 X 18 63 X 19 63 X 25 63 X 26 63 X 20 64 X 3 67 X 4 67 X 5 67 X 5 68 X 4 69 X 16 69 X 17 69 X 27 69 X -8 70 X 16 70 X 17 70 X 26 70 X 27 70 X -9 71 X -8 71 X 26 71 X 28 71 X 37 71 X 39 71 X-10 72 X -9 72 X -4 72 X -3 72 X 3 72 X 35 72 X 39 72 X-20 73 X-19 73 X-11 73 X-10 73 X -9 73 X -4 73 X -3 73 X 1 73 X 3 73 X 23 73 X 24 73 X 35 73 X-20 74 X-19 74 X-10 74 X -9 74 X -4 74 X -3 74 X 0 74 X 2 74 X 23 74 X 26 74 X 34 74 X 39 74 X 48 74 X 49 74 X -9 75 X -8 75 X -1 75 X 2 75 X 14 75 X 15 75 X 27 75 X 35 75 X 48 75 X 49 75 X -8 76 X 0 76 X 2 76 X 14 76 X 15 76 X 27 76 X 35 76 X 39 76 X 1 77 X 3 77 X 27 77 X 37 77 X 39 77 X 3 78 X 23 78 X 26 78 X 23 79 X 24 79 END_OF_xlife-2.0/patterns/blockpusher4.life if test 6867 -ne `wc -c <xlife-2.0/patterns/blockpusher4.life`; then echo shar: \"xlife-2.0/patterns/blockpusher4.life\" unpacked with wrong size! fi # end of overwriting check fi if test -f xlife-2.0/patterns/counter.life -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"xlife-2.0/patterns/counter.life\" else echo shar: Extracting \"xlife-2.0/patterns/counter.life\" \(6651 characters\) sed "s/^X//" >xlife-2.0/patterns/counter.life <<'END_OF_xlife-2.0/patterns/counter.life' X#R X 23 -77 X 24 -77 X 25 -76 X-19 -75 X-18 -75 X-17 -75 X -8 -75 X -7 -75 X 10 -75 X 11 -75 X 22 -75 X 23 -75 X 26 -75 X-21 -74 X-17 -74 X -8 -74 X -7 -74 X 10 -74 X 11 -74 X 23 -74 X 26 -74 X 45 -74 X-22 -73 X-17 -73 X 24 -73 X 26 -73 X 44 -73 X 45 -73 X-55 -72 X-54 -72 X-44 -72 X-43 -72 X-22 -72 X-18 -72 X 24 -72 X 25 -72 X 43 -72 X 44 -72 X 45 -72 X 47 -72 X 57 -72 X 58 -72 X-55 -71 X-54 -71 X-45 -71 X-44 -71 X 42 -71 X 43 -71 X 57 -71 X 58 -71 X-44 -70 X-43 -70 X-42 -70 X-41 -70 X-40 -70 X-22 -70 X-18 -70 X 13 -70 X 14 -70 X 24 -70 X 25 -70 X 43 -70 X 44 -70 X-43 -69 X-42 -69 X-41 -69 X-40 -69 X-22 -69 X-17 -69 X 11 -69 X 15 -69 X 16 -69 X 24 -69 X 26 -69 X 44 -69 X-21 -68 X-17 -68 X -8 -68 X -7 -68 X 11 -68 X 16 -68 X 23 -68 X 26 -68 X-43 -67 X-42 -67 X-41 -67 X-40 -67 X-27 -67 X-19 -67 X-18 -67 X-17 -67 X -8 -67 X -7 -67 X 11 -67 X 15 -67 X 16 -67 X 22 -67 X 23 -67 X 26 -67 X 44 -67 X 55 -67 X-44 -66 X-43 -66 X-42 -66 X-41 -66 X-40 -66 X-29 -66 X-27 -66 X 13 -66 X 14 -66 X 25 -66 X 43 -66 X 44 -66 X 53 -66 X 54 -66 X 56 -66 X-45 -65 X-44 -65 X-28 -65 X-27 -65 X 23 -65 X 24 -65 X 42 -65 X 43 -65 X 52 -65 X 53 -65 X 55 -65 X 56 -65 X 57 -65 X-44 -64 X-43 -64 X 43 -64 X 44 -64 X 45 -64 X 47 -64 X 53 -64 X 56 -64 X 44 -63 X 45 -63 X 54 -63 X 55 -63 X 25 -62 X 27 -62 X 45 -62 X 25 -61 X 26 -61 X 26 -60 X-16 -56 X-15 -55 X-17 -54 X-16 -54 X-15 -54 X 15 -51 X 13 -50 X 14 -50 X 14 -49 X 15 -49 X -4 -44 X -6 -43 X -4 -43 X -5 -42 X -4 -42 X-28 -41 X-27 -41 X-24 -41 X-22 -41 X 19 -41 X 20 -41 X 21 -41 X 22 -41 X-29 -40 X-28 -40 X-27 -40 X-25 -40 X-21 -40 X -8 -40 X -7 -40 X 10 -40 X 11 -40 X 18 -40 X 19 -40 X 22 -40 X-30 -39 X-29 -39 X-22 -39 X -8 -39 X -7 -39 X 2 -39 X 4 -39 X 10 -39 X 11 -39 X 17 -39 X 18 -39 X 21 -39 X-40 -38 X-39 -38 X-35 -38 X-29 -38 X-27 -38 X-26 -38 X-25 -38 X-24 -38 X-23 -38 X 2 -38 X 3 -38 X 18 -38 X 21 -38 X 47 -38 X 48 -38 X-55 -37 X-54 -37 X-40 -37 X-39 -37 X-38 -37 X-36 -37 X-34 -37 X-33 -37 X-28 -37 X-27 -37 X-26 -37 X 3 -37 X 19 -37 X 20 -37 X 46 -37 X 47 -37 X 49 -37 X 50 -37 X 57 -37 X 58 -37 X-55 -36 X-54 -36 X-40 -36 X-39 -36 X-38 -36 X-33 -36 X 47 -36 X 50 -36 X 57 -36 X 58 -36 X-37 -35 X-33 -35 X-28 -35 X-27 -35 X-26 -35 X 19 -35 X 20 -35 X 47 -35 X 50 -35 X-36 -34 X-35 -34 X-34 -34 X-29 -34 X-27 -34 X-26 -34 X-25 -34 X-24 -34 X-23 -34 X 18 -34 X 21 -34 X 48 -34 X 49 -34 X-54 -33 X-53 -33 X-49 -33 X-48 -33 X-30 -33 X-29 -33 X-22 -33 X -8 -33 X -7 -33 X 17 -33 X 18 -33 X 21 -33 X-55 -32 X-54 -32 X-53 -32 X-49 -32 X-48 -32 X-47 -32 X-36 -32 X-35 -32 X-34 -32 X-29 -32 X-28 -32 X-27 -32 X-25 -32 X-21 -32 X -8 -32 X -7 -32 X 18 -32 X 19 -32 X 22 -32 X 48 -32 X 49 -32 X-57 -31 X-56 -31 X-55 -31 X-47 -31 X-46 -31 X-45 -31 X-37 -31 X-33 -31 X-28 -31 X-27 -31 X-24 -31 X-22 -31 X 19 -31 X 20 -31 X 21 -31 X 22 -31 X 30 -31 X 47 -31 X 50 -31 X-57 -30 X-56 -30 X-55 -30 X-47 -30 X-46 -30 X-45 -30 X-40 -30 X-39 -30 X-38 -30 X-33 -30 X -4 -30 X -3 -30 X 28 -30 X 29 -30 X 47 -30 X 50 -30 X-57 -29 X-56 -29 X-55 -29 X-47 -29 X-46 -29 X-45 -29 X-40 -29 X-39 -29 X-38 -29 X-36 -29 X-34 -29 X-33 -29 X -4 -29 X 29 -29 X 30 -29 X 46 -29 X 47 -29 X 49 -29 X 50 -29 X-55 -28 X-54 -28 X-53 -28 X-49 -28 X-48 -28 X-47 -28 X-40 -28 X-39 -28 X-35 -28 X -3 -28 X 47 -28 X 48 -28 X-54 -27 X-53 -27 X-49 -27 X-48 -27 X -4 -27 X -3 -27 X-19 -24 X-21 -23 X-19 -23 X-20 -22 X-19 -22 X -8 -13 X -7 -12 X -9 -11 X -8 -11 X -7 -11 X 7 -8 X-20 -7 X 5 -7 X 6 -7 X-21 -6 X-20 -6 X 6 -6 X 7 -6 X-22 -5 X-21 -5 X-20 -5 X-18 -5 X -8 -5 X -7 -5 X 10 -5 X 11 -5 X 24 -5 X 25 -5 X 26 -5 X 27 -5 X 33 -5 X 34 -5 X 35 -5 X-54 -4 X-51 -4 X-23 -4 X-22 -4 X -8 -4 X -7 -4 X 10 -4 X 11 -4 X 24 -4 X 26 -4 X 27 -4 X 34 -4 X 35 -4 X-51 -3 X-43 -3 X-42 -3 X-41 -3 X-22 -3 X-21 -3 X 24 -3 X 33 -3 X-55 -2 X-45 -2 X-40 -2 X-21 -2 X 25 -2 X 26 -2 X 40 -2 X 43 -2 X 44 -2 X 57 -2 X 58 -2 X-55 -1 X-54 -1 X-45 -1 X-39 -1 X 4 -1 X 41 -1 X 42 -1 X 44 -1 X 57 -1 X 58 -1 X-49 0 X-40 0 X-21 0 X 2 0 X 4 0 X 25 0 X 26 0 X 43 0 X-52 1 X-51 1 X-42 1 X-41 1 X-22 1 X-21 1 X 3 1 X 4 1 X 24 1 X 32 1 X 41 1 X 42 1 X 43 1 X-23 2 X-22 2 X -8 2 X -7 2 X 24 2 X 26 2 X 27 2 X 32 2 X 33 2 X 34 2 X 35 2 X-52 3 X-51 3 X-42 3 X-41 3 X-22 3 X-21 3 X-20 3 X-18 3 X -8 3 X -7 3 X 24 3 X 25 3 X 26 3 X 27 3 X 32 3 X 33 3 X 41 3 X 42 3 X 43 3 X-53 4 X-49 4 X-40 4 X-21 4 X-20 4 X 43 4 X-53 5 X-50 5 X-45 5 X-39 5 X-20 5 X -4 5 X -3 5 X 34 5 X 41 5 X 42 5 X 44 5 X-53 6 X-50 6 X-45 6 X-40 6 X -4 6 X 40 6 X 43 6 X 44 6 X-52 7 X-51 7 X-43 7 X-42 7 X-41 7 X-23 7 X -3 7 X-22 8 X -4 8 X -3 8 X-24 9 X-23 9 X-22 9 X 22 12 X 20 13 X 21 13 X 21 14 X 22 14 X-11 19 X-13 20 X-11 20 X-12 21 X-11 21 X-18 29 X-17 29 X-19 30 X-18 30 X-16 30 X-15 30 X -8 30 X -7 30 X 0 30 X 10 30 X 11 30 X 26 30 X 27 30 X 28 30 X-18 31 X-15 31 X -8 31 X -7 31 X 1 31 X 10 31 X 11 31 X 24 31 X 28 31 X-45 32 X-44 32 X-18 32 X-15 32 X -1 32 X 0 32 X 1 32 X 23 32 X 28 32 X-55 33 X-54 33 X-46 33 X-44 33 X-17 33 X-16 33 X 23 33 X 27 33 X 41 33 X 42 33 X 57 33 X 58 33 X-55 34 X-54 34 X-47 34 X-46 34 X-44 34 X 40 34 X 41 34 X 57 34 X 58 34 X-46 35 X-45 35 X-17 35 X-16 35 X 13 35 X 14 35 X 15 35 X 23 35 X 27 35 X 41 35 X 42 35 X 43 35 X 44 35 X 45 35 X-45 36 X-18 36 X-15 36 X 11 36 X 12 36 X 14 36 X 16 36 X 17 36 X 23 36 X 28 36 X 42 36 X 43 36 X 44 36 X 45 36 X-18 37 X-15 37 X -8 37 X -7 37 X 11 37 X 12 37 X 18 37 X 24 37 X 28 37 X-45 38 X-19 38 X-18 38 X-16 38 X-15 38 X -8 38 X -7 38 X 11 38 X 12 38 X 14 38 X 16 38 X 17 38 X 26 38 X 27 38 X 28 38 X 42 38 X 43 38 X 44 38 X 45 38 X 54 38 X 55 38 X-46 39 X-45 39 X-26 39 X-18 39 X-17 39 X 13 39 X 14 39 X 15 39 X 41 39 X 42 39 X 43 39 X 44 39 X 45 39 X 51 39 X 52 39 X 54 39 X 56 39 X-47 40 X-46 40 X-44 40 X-28 40 X-26 40 X -4 40 X -3 40 X 40 40 X 41 40 X 51 40 X 52 40 X 56 40 X 57 40 X-46 41 X-44 41 X-27 41 X-26 41 X -4 41 X 41 41 X 42 41 X 51 41 X 52 41 X 54 41 X 56 41 X-45 42 X-44 42 X -3 42 X 12 42 X 54 42 X 55 42 X -4 43 X -3 43 X 10 43 X 12 43 X 11 44 X 12 44 X 24 44 X 26 44 X 24 45 X 25 45 X 25 46 X-15 50 X-14 51 X-16 52 X-15 52 X-14 52 X 14 55 X 12 56 X 13 56 X 13 57 X 14 57 X -3 62 X -5 63 X -3 63 X -4 64 X -3 64 X 17 64 X 18 64 X 21 64 X 23 64 X 10 65 X 11 65 X 16 65 X 17 65 X 18 65 X 20 65 X 24 65 X 10 66 X 11 66 X 15 66 X 16 66 X 23 66 X 16 67 X 18 67 X 19 67 X 20 67 X 21 67 X 22 67 X 45 67 X 46 67 X 50 67 X 17 68 X 18 68 X 19 68 X 45 68 X 46 68 X 47 68 X 49 68 X 51 68 X 52 68 X 57 68 X 58 68 X 45 69 X 46 69 X 47 69 X 52 69 X 57 69 X 58 69 X 17 70 X 18 70 X 19 70 X 48 70 X 52 70 X -3 71 X 16 71 X 18 71 X 19 71 X 20 71 X 21 71 X 22 71 X 49 71 X 50 71 X 51 71 X -4 72 X -2 72 X 15 72 X 16 72 X 23 72 X -4 73 X -3 73 X 8 73 X 16 73 X 17 73 X 18 73 X 20 73 X 24 73 X 49 73 X 50 73 X 51 73 X 9 74 X 17 74 X 18 74 X 21 74 X 23 74 X 48 74 X 52 74 X -4 75 X -3 75 X 7 75 X 8 75 X 9 75 X 29 75 X 45 75 X 46 75 X 47 75 X 52 75 X -4 76 X 27 76 X 28 76 X 45 76 X 46 76 X 47 76 X 49 76 X 51 76 X 52 76 X -3 77 X 28 77 X 29 77 X 45 77 X 46 77 X 50 77 X -4 78 X -3 78 END_OF_xlife-2.0/patterns/counter.life if test 6651 -ne `wc -c <xlife-2.0/patterns/counter.life`; then echo shar: \"xlife-2.0/patterns/counter.life\" unpacked with wrong size! fi # end of overwriting check fi if test -f xlife-2.0/patterns/gliderarmyof256.life -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"xlife-2.0/patterns/gliderarmyof256.life\" else echo shar: Extracting \"xlife-2.0/patterns/gliderarmyof256.life\" \(6173 characters\) sed "s/^X//" >xlife-2.0/patterns/gliderarmyof256.life <<'END_OF_xlife-2.0/patterns/gliderarmyof256.life' X#P -38 -38 X.*....*....*....*....*....*....*....*....*....*....*....*....*....*....*....*. X**...**...**...**...**...**...**...**...**...**...**...**...**...**...**...**. X*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.* X.............................................................................. X.............................................................................. X.*....*....*....*....*....*....*....*....*....*....*....*....*....*....*....*. X**...**...**...**...**...**...**...**...**...**...**...**...**...**...**...**. X*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.* X.............................................................................. X.............................................................................. X.*....*....*....*....*....*....*....*....*....*....*....*....*....*....*....*. X**...**...**...**...**...**...**...**...**...**...**...**...**...**...**...**. X*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.* X.............................................................................. X.............................................................................. X.*....*....*....*....*....*....*....*....*....*....*....*....*....*....*....*. X**...**...**...**...**...**...**...**...**...**...**...**...**...**...**...**. X*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.* X.............................................................................. X.............................................................................. X.*....*....*....*....*....*....*....*....*....*....*....*....*....*....*....*. X**...**...**...**...**...**...**...**...**...**...**...**...**...**...**...**. X*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.* X.............................................................................. X.............................................................................. X.*....*....*....*....*....*....*....*....*....*....*....*....*....*....*....*. X**...**...**...**...**...**...**...**...**...**...**...**...**...**...**...**. X*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.* X.............................................................................. X.............................................................................. X.*....*....*....*....*....*....*....*....*....*....*....*....*....*....*....*. X**...**...**...**...**...**...**...**...**...**...**...**...**...**...**...**. X*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.* X.............................................................................. X.............................................................................. X.*....*....*....*....*....*....*....*....*....*....*....*....*....*....*....*. X**...**...**...**...**...**...**...**...**...**...**...**...**...**...**...**. X*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.* X.............................................................................. X.............................................................................. X.*....*....*....*....*....*....*....*....*....*....*....*....*....*....*....*. X**...**...**...**...**...**...**...**...**...**...**...**...**...**...**...**. X*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.* X.............................................................................. X.............................................................................. X.*....*....*....*....*....*....*....*....*....*....*....*....*....*....*....*. X**...**...**...**...**...**...**...**...**...**...**...**...**...**...**...**. X*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.* X.............................................................................. X.............................................................................. X.*....*....*....*....*....*....*....*....*....*....*....*....*....*....*....*. X**...**...**...**...**...**...**...**...**...**...**...**...**...**...**...**. X*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.* X.............................................................................. X.............................................................................. X.*....*....*....*....*....*....*....*....*....*....*....*....*....*....*....*. X**...**...**...**...**...**...**...**...**...**...**...**...**...**...**...**. X*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.* X.............................................................................. X.............................................................................. X.*....*....*....*....*....*....*....*....*....*....*....*....*....*....*....*. X**...**...**...**...**...**...**...**...**...**...**...**...**...**...**...**. X*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.* X.............................................................................. X.............................................................................. X.*....*....*....*....*....*....*....*....*....*....*....*....*....*....*....*. X**...**...**...**...**...**...**...**...**...**...**...**...**...**...**...**. X*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.* X.............................................................................. X.............................................................................. X.*....*....*....*....*....*....*....*....*....*....*....*....*....*....*....*. X**...**...**...**...**...**...**...**...**...**...**...**...**...**...**...**. X*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.* X.............................................................................. X.............................................................................. X.*....*....*....*....*....*....*....*....*....*....*....*....*....*....*....*. X**...**...**...**...**...**...**...**...**...**...**...**...**...**...**...**. X*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.*..*.* END_OF_xlife-2.0/patterns/gliderarmyof256.life if test 6173 -ne `wc -c <xlife-2.0/patterns/gliderarmyof256.life`; then echo shar: \"xlife-2.0/patterns/gliderarmyof256.life\" unpacked with wrong size! fi # end of overwriting check fi if test -f xlife-2.0/patterns/rake2.life -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"xlife-2.0/patterns/rake2.life\" else echo shar: Extracting \"xlife-2.0/patterns/rake2.life\" \(2915 characters\) sed "s/^X//" >xlife-2.0/patterns/rake2.life <<'END_OF_xlife-2.0/patterns/rake2.life' X#R X 36 -16 X 37 -16 X 34 -15 X 39 -15 X 40 -14 X 11 -13 X 34 -13 X 40 -13 X 9 -12 X 13 -12 X 30 -12 X 35 -12 X 36 -12 X 37 -12 X 38 -12 X 39 -12 X 40 -12 X 46 -12 X 47 -12 X 48 -12 X 49 -12 X 50 -12 X 51 -12 X-49 -11 X 14 -11 X 29 -11 X 30 -11 X 45 -11 X 51 -11 X-51 -10 X-47 -10 X 9 -10 X 14 -10 X 29 -10 X 31 -10 X 51 -10 X-46 -9 X 10 -9 X 11 -9 X 12 -9 X 13 -9 X 14 -9 X 50 -9 X-51 -8 X-46 -8 X-14 -8 X -3 -8 X 43 -8 X 47 -8 X 48 -8 X-50 -7 X-49 -7 X-48 -7 X-47 -7 X-46 -7 X-15 -7 X-13 -7 X -3 -7 X -2 -7 X 42 -7 X 43 -7 X 44 -7 X-12 -6 X -8 -6 X -4 -6 X -2 -6 X 33 -6 X 34 -6 X 42 -6 X 43 -6 X 46 -6 X 47 -6 X-17 -5 X-16 -5 X-15 -5 X-14 -5 X-13 -5 X -9 -5 X -8 -5 X -7 -5 X -5 -5 X -4 -5 X -3 -5 X 0 -5 X 1 -5 X 12 -5 X 13 -5 X 33 -5 X 34 -5 X 36 -5 X 44 -5 X 45 -5 X 46 -5 X 47 -5 X 49 -5 X-22 -4 X-21 -4 X-18 -4 X-17 -4 X-11 -4 X-10 -4 X -6 -4 X -5 -4 X -3 -4 X 1 -4 X 2 -4 X 3 -4 X 11 -4 X 14 -4 X 29 -4 X 30 -4 X 33 -4 X 45 -4 X 50 -4 X-35 -3 X-34 -3 X-23 -3 X-20 -3 X-17 -3 X-12 -3 X-10 -3 X -7 -3 X -5 -3 X -4 -3 X 0 -3 X 2 -3 X 3 -3 X 4 -3 X 5 -3 X 6 -3 X 11 -3 X 13 -3 X 21 -3 X 22 -3 X 28 -3 X 30 -3 X 31 -3 X 33 -3 X 36 -3 X 37 -3 X 50 -3 X 51 -3 X-35 -2 X-34 -2 X-22 -2 X-21 -2 X-16 -2 X-12 -2 X-11 -2 X-10 -2 X -9 -2 X -2 -2 X -1 -2 X 2 -2 X 3 -2 X 4 -2 X 5 -2 X 6 -2 X 12 -2 X 21 -2 X 22 -2 X 28 -2 X 32 -2 X 34 -2 X 36 -2 X 47 -2 X 48 -2 X 49 -2 X 50 -2 X-12 -1 X-11 -1 X 0 -1 X 1 -1 X 2 -1 X 29 -1 X 30 -1 X 31 -1 X 33 -1 X 34 -1 X 47 -1 X 48 -1 X 49 -1 X-12 1 X-11 1 X 0 1 X 1 1 X 2 1 X 29 1 X 30 1 X 31 1 X 33 1 X 34 1 X 47 1 X 48 1 X 49 1 X-35 2 X-34 2 X-22 2 X-21 2 X-16 2 X-12 2 X-11 2 X-10 2 X -9 2 X -2 2 X -1 2 X 2 2 X 3 2 X 4 2 X 5 2 X 6 2 X 12 2 X 21 2 X 22 2 X 28 2 X 32 2 X 34 2 X 36 2 X 47 2 X 48 2 X 49 2 X 50 2 X-35 3 X-34 3 X-23 3 X-20 3 X-17 3 X-12 3 X-10 3 X -7 3 X -5 3 X -4 3 X 0 3 X 2 3 X 3 3 X 4 3 X 5 3 X 6 3 X 11 3 X 13 3 X 21 3 X 22 3 X 28 3 X 30 3 X 31 3 X 33 3 X 36 3 X 37 3 X 50 3 X 51 3 X-22 4 X-21 4 X-18 4 X-17 4 X-11 4 X-10 4 X -6 4 X -5 4 X -3 4 X 1 4 X 2 4 X 3 4 X 11 4 X 14 4 X 29 4 X 30 4 X 33 4 X 45 4 X 50 4 X-17 5 X-16 5 X-15 5 X-14 5 X-13 5 X -9 5 X -8 5 X -7 5 X -5 5 X -4 5 X -3 5 X 0 5 X 1 5 X 12 5 X 13 5 X 33 5 X 34 5 X 36 5 X 44 5 X 45 5 X 46 5 X 47 5 X 49 5 X-12 6 X -8 6 X -4 6 X -2 6 X 33 6 X 34 6 X 42 6 X 43 6 X 46 6 X 47 6 X-50 7 X-49 7 X-48 7 X-47 7 X-46 7 X-15 7 X-13 7 X -3 7 X -2 7 X 42 7 X 43 7 X 44 7 X-51 8 X-46 8 X-14 8 X -3 8 X 43 8 X 47 8 X 48 8 X-46 9 X 10 9 X 11 9 X 12 9 X 13 9 X 14 9 X 50 9 X-51 10 X-47 10 X 9 10 X 14 10 X 29 10 X 31 10 X 51 10 X-49 11 X 14 11 X 29 11 X 30 11 X 45 11 X 51 11 X 9 12 X 13 12 X 30 12 X 35 12 X 36 12 X 37 12 X 38 12 X 39 12 X 40 12 X 46 12 X 47 12 X 48 12 X 49 12 X 50 12 X 51 12 X 11 13 X 34 13 X 40 13 X 40 14 X 34 15 X 39 15 X 36 16 X 37 16 END_OF_xlife-2.0/patterns/rake2.life if test 2915 -ne `wc -c <xlife-2.0/patterns/rake2.life`; then echo shar: \"xlife-2.0/patterns/rake2.life\" unpacked with wrong size! fi # end of overwriting check fi if test -f xlife-2.0/patterns/round.life -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"xlife-2.0/patterns/round.life\" else echo shar: Extracting \"xlife-2.0/patterns/round.life\" \(1347 characters\) sed "s/^X//" >xlife-2.0/patterns/round.life <<'END_OF_xlife-2.0/patterns/round.life' X#R X 0 -34 X 1 -34 X-10 -33 X -9 -33 X -1 -33 X 1 -33 X 17 -33 X 18 -33 X-10 -32 X -9 -32 X -1 -32 X 17 -32 X 18 -32 X -1 -31 X 0 -31 X 1 -31 X -1 -27 X 0 -27 X 1 -27 X-10 -26 X -9 -26 X -1 -26 X 17 -26 X 18 -26 X-10 -25 X -9 -25 X -1 -25 X 1 -25 X 17 -25 X 18 -25 X 0 -24 X 1 -24 X -6 -18 X -5 -18 X 6 -18 X-33 -17 X-32 -17 X-26 -17 X-25 -17 X -5 -17 X -4 -17 X 7 -17 X 8 -17 X-33 -16 X-32 -16 X-26 -16 X-25 -16 X -6 -16 X 6 -16 X 7 -16 X 26 -10 X 27 -10 X 33 -10 X 34 -10 X 26 -9 X 27 -9 X 33 -9 X 34 -9 X-17 -7 X-17 -6 X-16 -6 X 17 -6 X 19 -6 X-18 -5 X-16 -5 X 18 -5 X 19 -5 X 18 -4 X 26 -1 X 27 -1 X 28 -1 X 32 -1 X 33 -1 X 34 -1 X-34 0 X-33 0 X-31 0 X-27 0 X-25 0 X-24 0 X 25 0 X 28 0 X 32 0 X 35 0 X-34 1 X-31 1 X-27 1 X-24 1 X 25 1 X 26 1 X 28 1 X 32 1 X 34 1 X 35 1 X-33 2 X-32 2 X-31 2 X-27 2 X-26 2 X-25 2 X-17 5 X-18 6 X-17 6 X 17 6 X 19 6 X-18 7 X-16 7 X 17 7 X 18 7 X 18 8 X-33 10 X-32 10 X-26 10 X-25 10 X-33 11 X-32 11 X-26 11 X-25 11 X -6 17 X -5 17 X 7 17 X 26 17 X 27 17 X 33 17 X 34 17 X -7 18 X -6 18 X 5 18 X 6 18 X 26 18 X 27 18 X 33 18 X 34 18 X -5 19 X 6 19 X 7 19 X 0 25 X 1 25 X-17 26 X-16 26 X 0 26 X 2 26 X 10 26 X 11 26 X-17 27 X-16 27 X 2 27 X 10 27 X 11 27 X 0 28 X 1 28 X 2 28 X 0 32 X 1 32 X 2 32 X-17 33 X-16 33 X 2 33 X 10 33 X 11 33 X-17 34 X-16 34 X 0 34 X 2 34 X 10 34 X 11 34 X 0 35 X 1 35 END_OF_xlife-2.0/patterns/round.life if test 1347 -ne `wc -c <xlife-2.0/patterns/round.life`; then echo shar: \"xlife-2.0/patterns/round.life\" unpacked with wrong size! fi # end of overwriting check fi if test -f xlife-2.0/utils.c -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"xlife-2.0/utils.c\" else echo shar: Extracting \"xlife-2.0/utils.c\" \(3331 characters\) sed "s/^X//" >xlife-2.0/utils.c <<'END_OF_xlife-2.0/utils.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 Xfatal(s) Xchar *s; X{ X fprintf(stderr, s); X exit(-22); X} X Xint ClassifyWin(win) XWindow win; X{ X if(win == lifew) X return LIFEWIN; X if(win == inputw) X return INPUTWIN; X if(win == mainw) X return MAINWIN; X} X Xchar *itoa(n) Xint n; X{ X static char buf[16]; X char sign; X char *ptr; X X if (n >= 0) X sign = ' '; X else { X n = -n; X sign = '-'; X } X buf[15] = 0; X ptr = buf + 14; X do { X *--ptr = n % 10 + '0'; X if (ptr <= buf) X return(buf); X n /= 10; X } while (n > 0); X *--ptr = sign; X return(ptr); X} X Xdrawpoint(x,y,c) X int x,y,c; X{ X if(c){ X XDrawPoint(disp,lifew,whitegc,x,y); X } X else{ X XDrawPoint(disp,lifew,blackgc,x,y); X } X} X Xdrawbox(x,y,c) X int x,y,c; X{ X int sc; X sc = (1 << scale -1) - (scale > 2); X if(c){ X XFillRectangle(disp,lifew,whitegc,x,y,sc,sc); X } X else{ X XFillRectangle(disp,lifew,blackgc,x,y,sc,sc); X } X} X Xvoid randomize(){ X unsigned long num; X X for(num = (width * height) >> (scale + 6);num;num--){ X addcell(random()%(width>>(scale-1))+xpos,random()%(height>>(scale-1))+ypos); X } X redisplay(); X} X Xvoid settimeout(ms) X unsigned long ms; X{ X timeout.tv_sec=ms/1000; X timeout.tv_usec=(ms%1000)*1000; X} X Xvoid benchmark() X{ X char outbuf[100]; X u_long num,count; X double tm; X struct timeval start,end; X struct timezone tmz; X X state=STOP; X X strcpy(inpbuf,"Number of generations:"); X minbuflen=22; X X XClearWindow(disp,inputw); X XDrawString(disp, inputw, ntextgc,ICOORDS(0,0),inpbuf, strlen(inpbuf)); X X getxstring(); X X strcpy(outbuf,inpbuf+22); X inpbuf[0]=0; X sscanf(outbuf,"%d",&count); X X gettimeofday(&start,&tmz); X for(num=0;num<count;num++){ X generate(); X } X gettimeofday(&end,&tmz); X tm=(((end.tv_sec * 1000000) + end.tv_usec) - ((start.tv_sec * 1000000) + start.tv_usec))/1000000.0; X sprintf(inpbuf,"%s:%f","Time",tm); X X XClearWindow(disp,lifew); X redrawscreen(); X XClearWindow(disp,inputw); X XDrawString(disp, inputw, ntextgc,ICOORDS(0,0),inpbuf, strlen(inpbuf)); X getxstring(); X inpbuf[0]=0; X} END_OF_xlife-2.0/utils.c if test 3331 -ne `wc -c <xlife-2.0/utils.c`; then echo shar: \"xlife-2.0/utils.c\" unpacked with wrong size! fi # end of overwriting check fi if test -f xlife-2.0/xlife.man -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"xlife-2.0/xlife.man\" else echo shar: Extracting \"xlife-2.0/xlife.man\" \(5364 characters\) sed "s/^X//" >xlife-2.0/xlife.man <<'END_OF_xlife-2.0/xlife.man' X.TH Xlife 6 X.SH NAME XXlife - Conway's Game of Life for X, version 2.0 X.SH SYNTAX X.B xlife [-geometry string] [-bw width] [initial pattern file] X.SH DESCRIPTION X.NXR "xlife" X.PN xlife Xbrings up a single window in which the user may play the game of life. X XThe universe is effectivly unbounded (4.2 billion on a side) XThe algorithim uses hashed 8x8 boxes of cells, and computes the next Xgeneration by using lookup tables for added speed. X XBy default Xlife will run in a window taking up your entire screen. The -bw Xoption allows you to pass Xlife the width of the borders created by your window Xmanager, for use in the internal window size calculation. X XThe -geometry option sets the Xlife window size and position as per usual for XX applications. X XIf possible, you should tell your window manager to create Xlife without a Xtitle bar; otherwise you will have to use -geometry to set the window's Xvertical size enough smaller than the default that the title bar doesn't Xcrowd the bottom of the window off the screen. X X.SH COMMANDS X.IP \fB8\fR 20 XMove your view of the universe up. X.IP \fB2\fR 20 XMove your view of the universe down. X.IP \fB6\fR 20 XMove your view of the universe right. X.IP \fB4\fR 20 XMove your view of the universe left. X.IP \fB5\fR 20 XCenter the universe on the screen (based on average position of the cells). X.IP \fB=,+\fR 20 XZoom the view in, magnifying the area around the mouse cursor. X.IP \fB\-\fR 20 XZoom the view out. X.IP \fBg\fR 20 XToggle running the game. X.IP \fBo\fR 20 XStep forward one generation. X.IP \fBS\fR 20 XSave the universe to a file adding extention .life. X.IP \fBl\fR 20 XLoad (actually add to) the universe from a file with extention .life. XThis lets you overlay multiple saved states to make for some interesting Xeffects. Clear the universe if you want to start from scratch. X.IP \fBh\fR 20 X(Hide) stop displaying after each generation, does not iconify. X.IP \fBc\fR 20 XToggle showing of cell counts X.IP \fB?\fR 20 XHelp for xlife. X.IP \fB!\fR 20 XPlace random cells on the area of the universe on the screen. X.IP \fBr\fR 20 XRedraw the screen. X.IP \fBR\fR 20 XChange the rules in "stays alive on"/"born on" Xformat. The standard rules are 23/3 (alive on two or three Xneighbors, birth on three neighbors for an empty cell). X.IP \fBN\fR 20 XChange the file's internal name. X.IP \fBA\fR 20 XAdd comments. X.IP \fBV\fR 20 XView comments. X.IP \fBC\fR 20 XClear the universe. X.IP \fBQ\fR 20 XQuit X.IP \fBButtons\fR 20 X.IP \fB1\fR 20 XActivate a cell at the cursor. X.IP \fB2\fR 20 XCenter the universe view on the cursor. X.IP \fB3\fR 20 XDelete a cell at the cursor. X.IP \fBf\fR 20 XRun at a fast speed (no delay) X.IP \fBm\fR 20 XRun at a medium speed X.IP \fBs\fR 20 XRun at a slow speed X X.SH LOAD FILE FORMAT XA .life image file is an ordinary text file consisting of lines terminated by Xthe newline character. It is interpreted as one or more image sections Xseparated by section lines beginning with '#'. Lines led by `##' are Xconsidered comments and ignored. X XEach image section is interpreted according to the format letter following its Xsection line #. The format letters are: X XA -- Absolute. XEach line is interpreted as an absolute (x,y) coordinate pair. X XR -- Relative. XEach line is interpreted as a relative (x,y) coordinate pair. X XP -- Picture. XEach line in the section is interpreted as a scan line of a relative image. XEach '*' character turns the corresponding bit on. All other characters leave Xthe corresponding bit off. X XI -- Include. XA #I line should have whitespace-separated fields after the #I; a pattern name Xand optionally two integers interpreted as x and y offsets. The named pattern Xfile is loaded as if it had been included in the image at this point. The Xoffsets, if present, displace the load point of the pattern relative to the Xcurrent mouse position. The include facility is useful for assembling `sampler' Xcollections of interesting patterns. X XRelative image sections are normally drawn with 0,0 on the current mouse Xposition (coordinates may be negative). This may be changed by including a Xpair of whitespace-separated integers after the format character. If this is Xdone, these will be interpreted as a pair of x and y offsets, and the image Xsection will be drawn with its upper left corner displaced from the cursor Xposition by those offsets. This facility can be used to write image files Xthat will load patterns centered on the cursor. X XA leading image section with no header line is treated as though it had a `#A' Xheader. Thus, version 1.00 image files will load properly. X XN -- Name XThis line contains the internal name of the pattern (which may differ from the XXXX.life name of the file. X XO -- Owner XThis line contains information on the person who wrote the file, it is written Xin the form: id "name"@machine date, for example. X X#O jb7m "Jon C. R. Bennett"@sushi.andrew.cmu.edu Fri Jan 12 18:25:54 1990 X XC -- Comment XLines begining with "C" are comments that the user may have automaticaly writen Xto the save file, and which may be viewed from withen Xlife. X XMore section formats may be added in the future. X X.SH RESTRICTIONS Xnone X X.SH AUTHORS XAlgorithm, implementation and file format enhancements: X Jon Bennett jcrb@cs.cmu.edu X XOriginal X code: X Chuck Silvers cs4n@andrew.cmu.edu X XAuto-sizing, X options and load format enhancements: X Eric S. Raymond (eric@snark.uu.net) X X.SH SEE ALSO Xxtrek(6) END_OF_xlife-2.0/xlife.man if test 5364 -ne `wc -c <xlife-2.0/xlife.man`; then echo shar: \"xlife-2.0/xlife.man\" unpacked with wrong size! fi # end of overwriting check fi echo shar: End of archive 5 \(of 8\). cp /dev/null ark5isdone 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.