; life6.as
; unrolled pointer version for HI-TECH 4.11 C Cross Compiler
; by Andre Adrian, DL1ADR, 2026-05-07
;
; compile:
; zc -O -S life5.c
; ren life5.as life6.as
; zc -A2100,2900,13FF -O -Olife6.bin -mlife6.map life6.as
;
	global	_putcm
	psect	text
;I:\HITECH\string.h: 4: typedef	int		ptrdiff_t;
;I:\HITECH\string.h: 5: typedef	unsigned	size_t;
;I:\HITECH\string.h: 8: extern int	errno;
;I:\HITECH\string.h: 16: extern void *	memcpy(void *, const void *, size_t);
;I:\HITECH\string.h: 17: extern void *	memmove(void *, void *, size_t);
;I:\HITECH\string.h: 18: extern char *	strcpy(char *, char *);
;I:\HITECH\string.h: 19: extern char *	strncpy(char *, char *, size_t);
;I:\HITECH\string.h: 20: extern char *	strcat(char *, char *);
;I:\HITECH\string.h: 21: extern char *	strncat(char *, char *, size_t);
;I:\HITECH\string.h: 22: extern int	memcmp(const void *, const void *, size_t);
;I:\HITECH\string.h: 23: extern int	strcmp(char *, char *);
;I:\HITECH\string.h: 24: extern int	strncmp(char *, char *, size_t);
;I:\HITECH\string.h: 25: extern size_t	strcoll(char *, size_t, char *);
;I:\HITECH\string.h: 26: extern void *	memchr(void *, int, size_t);
;I:\HITECH\string.h: 27: extern size_t	strcspn(char *, char *);
;I:\HITECH\string.h: 28: extern char *	strpbrk(char *, char *);
;I:\HITECH\string.h: 29: extern size_t	strspn(char *, char *);
;I:\HITECH\string.h: 30: extern char *	strstr(char *, char *);
;I:\HITECH\string.h: 31: extern char *	strtok(char *, char *);
;I:\HITECH\string.h: 32: extern char *	strdup(char *);
;I:\HITECH\string.h: 33: extern void *	memset(void *, int, size_t);
;I:\HITECH\string.h: 34: extern char *	strerror(int);
;I:\HITECH\string.h: 35: extern size_t	strlen(char *);
;I:\HITECH\string.h: 36: extern char *	strchr(char *, int);
;I:\HITECH\string.h: 37: extern char *	strrchr(char *, int);
;life5.c: 18: void putcm(char c) {
_putcm:
	push	ix
	ld	ix,0
	add	ix,sp
;life5.c: 20: 	ld	a,(ix+4)
	ld	a,(ix+4) ;#
;life5.c: 21: 	rst 08h
	rst 08h ;#
;life5.c: 23: }
	pop	ix
	ret	
	global	_getcm
;life5.c: 25: static char c_;
;life5.c: 27: void getcm(void) {
_getcm:
;life5.c: 29: 	rst 10h
	rst 10h ;#
;life5.c: 30: 	ld (_c_),a
	ld (_c_),a ;#
;life5.c: 32: }
	ret	
	global	_putch
;life5.c: 34: void putch(char c) {
_putch:
	push	ix
	ld	ix,0
	add	ix,sp
;life5.c: 35: 	if(c == '\n')
	ld	a,(ix+4)
	cp	10
	jp	nz,l4
;life5.c: 36: 		putcm('\r');
	ld	l,13
	push	hl
	call	_putcm
	pop	bc
;life5.c: 37: 	putcm(c);
l4:
	ld	l,(ix+4)
	push	hl
	call	_putcm
	pop	bc
;life5.c: 38: }
	pop	ix
	ret	
	global	_getche
;life5.c: 40: char getche(void) {
_getche:
;life5.c: 41: 	getcm();
	call	_getcm
;life5.c: 42: 	if (c_ == '\r')
	ld	a,(_c_)
	cp	13
	jp	nz,l6
;life5.c: 43: 		c_='\n';
	ld	hl,_c_
	ld	(hl),10
;life5.c: 44: 	putch(c_);
l6:
	ld	hl,_c_
	ld	l,(hl)
	push	hl
	call	_putch
	pop	bc
;life5.c: 45: 	return c_;
	ld	hl,_c_
	ld	l,(hl)
	ret	
	global	_cputs
;life5.c: 48: void cputs(char* s) {
_cputs:
	push	ix
	ld	ix,0
	add	ix,sp
	jp	l8
l9:
;life5.c: 50:         putch(*s++);
	ld	l,(ix+4)
	ld	h,(ix+5)
	inc	hl
	ld	(ix+4),l
	ld	(ix+5),h
	dec	hl
	ld	l,(hl)
	push	hl
	call	_putch
	pop	bc
l8:
	ld	l,(ix+4)
	ld	h,(ix+5)
	ld	a,(hl)
	or	a
	jp	nz,l9
;life5.c: 51: }
	pop	ix
	ret	
	global	_sgets
	psect	bss
F91:
	defs	1
	psect	text
;life5.c: 54: char* sgets(char* s, int size) {
_sgets:
	push	ix
	ld	ix,0
	add	ix,sp
	push	bc
;life5.c: 55:     char* s1 = s;
	ld	l,(ix+4)
	ld	h,(ix+5)
	ld	(ix+-2),l
	ld	(ix+-1),h
;life5.c: 56:     static char c;
;life5.c: 58:     while((c=getche())!='\r' && c!='\n' && --size) {
	jp	l12
u2611:
	ld	l,(ix+6)
	ld	h,(ix+7)
	dec	hl
	ld	(ix+6),l
	ld	(ix+7),h
	ld	a,l
	or	h
	jp	nz,l13
l14:
;life5.c: 61:     *s = 0;
	ld	l,(ix+4)
	ld	h,(ix+5)
	ld	(hl),0
;life5.c: 62:     if(s == s1)
	ld	e,(ix+-2)
	ld	d,(ix+-1)
	or	a
	sbc	hl,de
	jp	nz,l15
;life5.c: 63:         return((char *)0);
	ld	hl,0
	jp	l11
l13:
;life5.c: 59:         *s++ = c;
	ld	a,(F91)
	ld	l,(ix+4)
	ld	h,(ix+5)
	inc	hl
	ld	(ix+4),l
	ld	(ix+5),h
	dec	hl
	ld	(hl),a
;life5.c: 60:     }
l12:
	call	_getche
	ld	a,l
	ld	(F91),a
	cp	13
	jp	z,l14
	cp	10
	jp	nz,u2611
	jp	l14
l15:
	ld	l,(ix+-2)
	ld	h,(ix+-1)
l11:
	ld	sp,ix
	pop	ix
	ret	
	global	_prbcdu
	global	_strcpy
	global	wrelop
	global	wrelop
	global	wrelop
	global	wrelop
	psect	bss
F95:
	defs	6
	psect	text
;life5.c: 69: void prbcdu(unsigned n) {
_prbcdu:
	push	ix
	ld	ix,0
	add	ix,sp
;life5.c: 70:     static char s[6];
;life5.c: 72:     strcpy(s, "00000");
	ld	hl,u19
	push	hl
	ld	hl,F95
	push	hl
	call	_strcpy
	pop	bc
	pop	bc
;life5.c: 73:     while (n>=10000) {
	jp	l17
l18:
;life5.c: 74:         n-=10000;
	ld	de,10000
	ld	l,(ix+4)
	ld	h,(ix+5)
	or	a
	sbc	hl,de
	ld	(ix+4),l
	ld	(ix+5),h
;life5.c: 75:         ++s[0];
	ld	hl,F95
	inc	(hl)
;life5.c: 76:     }
l17:
	ld	de,10000
	ld	l,(ix+4)
	ld	h,(ix+5)
	call	wrelop
	jp	nc,l18
;life5.c: 77:     while (n>=1000) {
	jp	l20
l21:
;life5.c: 78:         n-=1000;
	ld	de,1000
	ld	l,(ix+4)
	ld	h,(ix+5)
	or	a
	sbc	hl,de
	ld	(ix+4),l
	ld	(ix+5),h
;life5.c: 79:         ++s[1];
	ld	hl,F95+1
	inc	(hl)
;life5.c: 80:     }
l20:
	ld	de,1000
	ld	l,(ix+4)
	ld	h,(ix+5)
	call	wrelop
	jp	nc,l21
;life5.c: 81:     while (n>=100) {
	jp	l23
l24:
;life5.c: 82:         n-=100;
	ld	de,100
	ld	l,(ix+4)
	ld	h,(ix+5)
	or	a
	sbc	hl,de
	ld	(ix+4),l
	ld	(ix+5),h
;life5.c: 83:         ++s[2];
	ld	hl,F95+2
	inc	(hl)
;life5.c: 84:     }
l23:
	ld	de,100
	ld	l,(ix+4)
	ld	h,(ix+5)
	call	wrelop
	jp	nc,l24
;life5.c: 85:     while (n>=10) {
	jp	l26
l27:
;life5.c: 86:         n-=10;
	ld	de,10
	ld	l,(ix+4)
	ld	h,(ix+5)
	or	a
	sbc	hl,de
	ld	(ix+4),l
	ld	(ix+5),h
;life5.c: 87:         ++s[3];
	ld	hl,F95+3
	inc	(hl)
;life5.c: 88:     }
l26:
	ld	de,10
	ld	l,(ix+4)
	ld	h,(ix+5)
	call	wrelop
	jp	nc,l27
;life5.c: 89:     s[4]+=n;
	ld	hl,F95+4
	ld	a,(hl)
	add	a,(ix+4)
	ld	(hl),a
;life5.c: 90:     cputs(s);
	ld	hl,F95
	push	hl
	call	_cputs
	pop	bc
;life5.c: 91: }
	pop	ix
	ret	
	global	_TAB
;life5.c: 93: void TAB(int x) {
_TAB:
	push	ix
	ld	ix,0
	add	ix,sp
	jp	l30
l31:
;life5.c: 95:         putch(' ');
	ld	l,32
	push	hl
	call	_putch
	pop	bc
;life5.c: 96:     }
l30:
	ld	l,(ix+4)
	ld	h,(ix+5)
	dec	hl
	ld	(ix+4),l
	ld	(ix+5),h
	ld	a,l
	or	h
	jp	nz,l31
;life5.c: 97: }
	pop	ix
	ret	
	psect	data
_G:
	defw	0
_P:
	defw	0
_E:
	defb	0
	global	_main
	global	shll
	global	shll
	global	_strlen
	global	shll
	global	wrelop
	global	shll
	global	wrelop
	global	shll
	global	lmul
	global	shll
	global	wrelop
	global	wrelop
	global	lmul
	global	lmul
	global	wrelop
	global	wrelop
	psect	text
;life5.c: 99: static unsigned G=0, P=0;
;life5.c: 100: static unsigned char E=0, L, X, Y, X1, X2, X3, X4, Y1, Y2, Y3, Y4;
;life5.c: 101: static char A[50  +1][70  +1], B[32][32];
;life5.c: 102: static char *pX, *pY, *p;
;life5.c: 104: int main() {
_main:
	push	ix
	ld	ix,0
	add	ix,sp
	dec	sp
;life5.c: 105:     register unsigned char C=0;
	ld	(ix+-1),0
;life5.c: 106: 	putch('\n');
	ld	l,10
	push	hl
	call	_putch
	pop	bc
;life5.c: 107:     TAB(34); cputs("LIFE\n");
	ld	hl,34
	push	hl
	call	_TAB
	pop	bc
	ld	hl,u29
	push	hl
	call	_cputs
	pop	bc
;life5.c: 108:     TAB(15); cputs("CREATIVE COMPUTING MORRISTOWN, NEW JERSEY\n"
	ld	hl,15
	push	hl
	call	_TAB
	pop	bc
;life5.c: 109:                     "\n\n"
;life5.c: 110:                     "ENTER YOUR PATTERN:\n");
	ld	hl,u39
	push	hl
	call	_cputs
	pop	bc
;life5.c: 111:     for (;;) {
l34:
;life5.c: 112:         sgets(B[C], sizeof(B[0]));
	ld	hl,32
	push	hl
	ld	de,_B
	ld	b,5
	ld	l,(ix+-1)
	ld	h,0
	call	shll
	add	hl,de
	push	hl
	call	_sgets
	pop	bc
	pop	bc
;life5.c: 113:         if (B[C][0]=='D') {
	ld	de,_B
	ld	b,5
	ld	l,(ix+-1)
	ld	h,0
	call	shll
	add	hl,de
	ld	a,(hl)
	cp	68
	jp	nz,l37
;life5.c: 114:             break;
;life5.c: 118:     --C; L=0;
	dec	(ix+-1)
	ld	hl,_L
	ld	(hl),0
;life5.c: 119:     for(X=0; X<=C-1; ++X) {
	ld	hl,_X
	ld	(hl),0
	jp	l41
l37:
	inc	(ix+-1)
;life5.c: 117:     }
	jp	l34
l38:
;life5.c: 120:         if (strlen(B[X])>L)
	ld	de,_B
	ld	b,5
	ld	hl,_X
	ld	l,(hl)
	ld	h,0
	call	shll
	add	hl,de
	push	hl
	call	_strlen
	pop	bc
	ex	de,hl
	ld	hl,_L
	ld	l,(hl)
	ld	h,0
	call	wrelop
	jp	nc,l40
;life5.c: 121:             L=strlen(B[X]);
	ld	de,_B
	ld	b,5
	ld	hl,_X
	ld	l,(hl)
	ld	h,0
	call	shll
	add	hl,de
	push	hl
	call	_strlen
	pop	bc
	ld	a,l
	ld	(_L),a
;life5.c: 122:     }
l40:
	ld	hl,_X
	inc	(hl)
l41:
	ld	hl,_X
	ld	e,(hl)
	ld	d,0
	ld	c,(ix+-1)
	ld	b,d
	ld	hl,-1
	add	hl,bc
	call	wrelop
	jp	nc,l38
;life5.c: 123:     X1=(50  >>1)-(C>>1); X2=X1+C;
	ld	e,(ix+-1)
	srl	e
	ld	a,25
	sub	e
	ld	(_X1),a
	ld	hl,_X1
	ld	a,(ix+-1)
	add	a,(hl)
	ld	(_X2),a
;life5.c: 124:     Y1=(70  >>1)-(L>>1); Y2=Y1+L;
	ld	hl,_L
	ld	l,(hl)
	srl	l
	ld	a,35
	sub	l
	ld	(_Y1),a
	ld	hl,_L
	add	a,(hl)
	ld	(_Y2),a
;life5.c: 125:     for (X=0; X<=C; ++X) {
	ld	hl,_X
	ld	(hl),0
	jp	l46
l43:
;life5.c: 126:         for (Y=0; Y<strlen(B[X]); ++Y) {
	ld	hl,_Y
	ld	(hl),0
	jp	l50
l47:
;life5.c: 127:             if (B[X][Y]=='*') {
	ld	hl,_Y
	ld	e,(hl)
	ld	d,0
	ld	b,5
	ld	hl,_X
	ld	l,(hl)
	ld	h,d
	call	shll
	add	hl,de
	ld	de,_B
	add	hl,de
	ld	a,(hl)
	cp	42
	jp	nz,l49
;life5.c: 128:                 A[X1+X][Y1+Y]=1; ++P;
	ld	hl,_Y
	ld	e,(hl)
	ld	d,0
	ld	hl,_Y1
	ld	l,(hl)
	ld	h,d
	add	hl,de
	push	hl
	ld	de,71
	ld	hl,_X
	ld	c,(hl)
	ld	b,0
	ld	hl,_X1
	ld	l,(hl)
	ld	h,b
	add	hl,bc
	call	lmul
	pop	de
	add	hl,de
	ld	de,_A
	add	hl,de
	ld	(hl),1
	ld	hl,(_P)
	inc	hl
	ld	(_P),hl
;life5.c: 129:             }
;life5.c: 130:         }
l49:
	ld	hl,_Y
	inc	(hl)
l50:
	ld	de,_B
	ld	b,5
	ld	hl,_X
	ld	l,(hl)
	ld	h,0
	call	shll
	add	hl,de
	push	hl
	call	_strlen
	pop	bc
	ex	de,hl
	ld	hl,_Y
	ld	l,(hl)
	ld	h,0
	call	wrelop
	jp	c,l47
;life5.c: 131:     }
	ld	hl,_X
	inc	(hl)
l46:
	ld	hl,_X
	ld	a,(ix+-1)
	cp	(hl)
	jp	nc,l43
;life5.c: 132:     cputs("\n\n");
	ld	hl,u49
	push	hl
	call	_cputs
	pop	bc
;life5.c: 133:     for(;;) {
l52:
;life5.c: 134:         X4=2; X3=50  -2; Y4=2; Y3=70  -2;
	ld	hl,_X4
	ld	(hl),2
	ld	hl,_X3
	ld	(hl),48
	ld	hl,_Y4
	ld	(hl),2
	ld	hl,_Y3
	ld	(hl),68
;life5.c: 135:         for (X=1; X<=X1-1; ++X) putch('\n');
	ld	hl,_X
	ld	(hl),1
	jp	l58
l55:
	ld	l,10
	push	hl
	call	_putch
	pop	bc
	ld	hl,_X
	inc	(hl)
l58:
	ld	hl,_X
	ld	e,(hl)
	ld	d,0
	ld	hl,_X1
	ld	c,(hl)
	ld	b,d
	ld	hl,-1
	add	hl,bc
	call	wrelop
	jp	nc,l55
;life5.c: 136:         putch('\n');
	ld	l,10
	push	hl
	call	_putch
	pop	bc
;life5.c: 137:         pX=&A[X1][0];
	ld	de,71
	ld	hl,_X1
	ld	l,(hl)
	ld	h,0
	call	lmul
	ld	de,_A
	add	hl,de
	ld	(_pX),hl
;life5.c: 138:         for (X=X1; X<=X2; ++X, pX+=(70  +1)) {
	ld	a,(_X1)
	ld	(_X),a
	jp	l62
l59:
;life5.c: 139:             TAB(Y1);
	ld	hl,_Y1
	ld	l,(hl)
	ld	h,0
	push	hl
	call	_TAB
	pop	bc
;life5.c: 140:             pY=pX+Y1;
	ld	hl,_Y1
	ld	e,(hl)
	ld	d,0
	ld	hl,(_pX)
	add	hl,de
	ld	(_pY),hl
;life5.c: 141:             for (Y=Y1; Y<=Y2; ++Y, ++pY) {
	ld	a,(_Y1)
	ld	(_Y),a
	jp	l66
l63:
;life5.c: 142:                 if (*pY==0     || *pY==3    ) {
	ld	hl,(_pY)
	ld	a,(hl)
	or	a
	jp	z,u16250
	ld	a,(hl)
	cp	3
	jp	nz,u16251
u16250:
;life5.c: 143:                     *pY=0    ; putch(' '); continue;
	ld	hl,(_pY)
	ld	(hl),0
	ld	l,32
	push	hl
	call	_putch
	pop	bc
	jp	l65
u16251:
	ld	hl,(_pY)
	ld	(hl),1
	ld	l,42
	push	hl
	call	_putch
	pop	bc
;life5.c: 146:                 if (X<X3) X3=X;
	ld	hl,_X3
	ld	a,(_X)
	cp	(hl)
	jp	nc,l68
	ld	(_X3),a
;life5.c: 147:                 if (X>X4) X4=X;
l68:
	ld	hl,_X
	ld	a,(_X4)
	cp	(hl)
	jp	nc,l69
	ld	a,(_X)
	ld	(_X4),a
;life5.c: 148:                 if (Y<Y3) Y3=Y;
l69:
	ld	hl,_Y3
	ld	a,(_Y)
	cp	(hl)
	jp	nc,l70
	ld	(_Y3),a
;life5.c: 149:                 if (Y>Y4) Y4=Y;
l70:
	ld	hl,_Y
	ld	a,(_Y4)
	cp	(hl)
	jp	nc,l65
	ld	a,(_Y)
	ld	(_Y4),a
;life5.c: 150:             }
l65:
	ld	hl,_Y
	inc	(hl)
	ld	hl,(_pY)
	inc	hl
	ld	(_pY),hl
l66:
	ld	hl,_Y
	ld	a,(_Y2)
	cp	(hl)
	jp	nc,l63
;life5.c: 151:             putch('\n');
	ld	l,10
	push	hl
	call	_putch
	pop	bc
;life5.c: 152:         }
	ld	hl,_X
	inc	(hl)
	ld	de,71
	ld	hl,(_pX)
	add	hl,de
	ld	(_pX),hl
l62:
	ld	hl,_X
	ld	a,(_X2)
	cp	(hl)
	jp	nc,l59
;life5.c: 153:         for (X=X2+1; X<=50  -1; ++X) putch('\n');
	inc	a
	ld	(_X),a
	jp	l75
l72:
	ld	l,10
	push	hl
	call	_putch
	pop	bc
	ld	hl,_X
	inc	(hl)
l75:
	ld	a,(_X)
	cp	50
	jp	c,l72
;life5.c: 154:         cputs("GENERATION: "); prbcdu(G);
	ld	hl,u59
	push	hl
	call	_cputs
	pop	bc
	ld	hl,(_G)
	push	hl
	call	_prbcdu
	pop	bc
;life5.c: 155:         cputs("\t\tPOPULATION: "); prbcdu(P);
	ld	hl,u69
	push	hl
	call	_cputs
	pop	bc
	ld	hl,(_P)
	push	hl
	call	_prbcdu
	pop	bc
;life5.c: 156:         if (E) {
	ld	a,(_E)
	or	a
	jp	z,l76
;life5.c: 157:             cputs(" INVALID "); prbcdu(E);
	ld	hl,u79
	push	hl
	call	_cputs
	pop	bc
	ld	hl,_E
	ld	l,(hl)
	ld	h,0
	push	hl
	call	_prbcdu
	pop	bc
;life5.c: 158:         }
;life5.c: 159:         if (P==0) break;
l76:
	ld	hl,(_P)
	ld	a,l
	or	h
	jp	nz,l77
	ld	sp,ix
	pop	ix
	ret	
l77:
	call	_getche
;life5.c: 161:         X1=X3; X2=X4; Y1=Y3; Y2=Y4; ++G; P=0; E=0;
	ld	a,(_X3)
	ld	(_X1),a
	ld	a,(_X4)
	ld	(_X2),a
	ld	a,(_Y3)
	ld	(_Y1),a
	ld	a,(_Y4)
	ld	(_Y2),a
	ld	hl,(_G)
	inc	hl
	ld	(_G),hl
	ld	hl,0
	ld	(_P),hl
	ld	hl,_E
	ld	(hl),0
;life5.c: 162:         if (X1<2) { X1=2; E=1; }
	ld	a,(_X1)
	cp	2
	jp	nc,l78
	ld	hl,_X1
	ld	(hl),2
	ld	hl,_E
	ld	(hl),1
;life5.c: 163:         if (X2>50  -2) { X2=50  -2; E+=2; }
l78:
	ld	a,(_X2)
	cp	49
	jp	c,l79
	ld	hl,_X2
	ld	(hl),48
	ld	hl,_E
	inc	(hl)
	inc	(hl)
;life5.c: 164:         if (Y1<2) { Y1=2; E+=4; }
l79:
	ld	a,(_Y1)
	cp	2
	jp	nc,l80
	ld	hl,_Y1
	ld	(hl),2
	ld	hl,_E
	inc	(hl)
	inc	(hl)
	inc	(hl)
	inc	(hl)
	ld	l,(hl)
;life5.c: 165:         if (Y2>70  -2) { Y2=70  -2; E+=8; }
l80:
	ld	a,(_Y2)
	cp	69
	jp	c,l81
	ld	hl,_Y2
	ld	(hl),68
	ld	hl,_E
	ld	a,(hl)
	add	a,8
	ld	(hl),a
;life5.c: 166:         pX=&A[X1-1][0];
l81:
	ld	hl,_X1
	ld	e,(hl)
	ld	d,0
	ld	hl,-1
	add	hl,de
	ld	de,71
	call	lmul
	ld	de,_A
	add	hl,de
	ld	(_pX),hl
;life5.c: 167:         for (X=X1-1; X<=X2+1; ++X, pX+=(70  +1)) {
	ld	a,(_X1)
	add	a,255
	ld	(_X),a
	jp	l85
l82:
;life5.c: 168:             pY=pX+Y1-1;
	ld	hl,_Y1
	ld	e,(hl)
	ld	d,0
	ld	hl,(_pX)
	add	hl,de
	dec	hl
	ld	(_pY),hl
;life5.c: 169:             for (Y=Y1-1; Y<=Y2+1; ++Y, ++pY) {
	ld	a,(_Y1)
	add	a,255
	ld	(_Y),a
	jp	l89
l86:
;life5.c: 170:                 C=0;
	ld	c,0
;life5.c: 171:                 p=pY-(70  +1)-1; if (*p&1) ++C;
	ld	de,(_pY)
	ld	hl,-72
	add	hl,de
	bit	0,(hl)
	jp	z,l90
	inc	c
;life5.c: 172:                 ++p; if (*p&1) ++C;
l90:
	inc	hl
	bit	0,(hl)
	jp	z,l91
	inc	c
;life5.c: 173:                 ++p; if (*p&1) ++C;
l91:
	inc	hl
	bit	0,(hl)
	jp	z,l92
	inc	c
;life5.c: 174:                 p+=(70  +1); if (*p&1) ++C;
l92:
	ld	de,71
	add	hl,de
	bit	0,(hl)
	jp	z,l93
	inc	c
;life5.c: 175:                 --p;
l93:
	dec	hl
;life5.c: 176:                 --p; if (*p&1) ++C;
	dec	hl
	bit	0,(hl)
	jp	z,l94
	inc	c
;life5.c: 177:                 p+=(70  +1); if (*p&1) ++C;
l94:
	ld	de,71
	add	hl,de
	bit	0,(hl)
	jp	z,l95
	inc	c
;life5.c: 178:                 ++p; if (*p&1) ++C;
l95:
	inc	hl
	bit	0,(hl)
	jp	z,l96
	inc	c
;life5.c: 179:                 ++p; if (*p&1) ++C;
l96:
	inc	hl
	bit	0,(hl)
	jp	z,l97
	inc	c
;life5.c: 180:                 if (*pY==0    ) goto L570;
l97:
	ld	(ix+-1),c
	ld	hl,(_pY)
	ld	a,(hl)
	or	a
	jp	z,l99
	ld	a,(ix+-1)
	cp	2
	jp	c,u26840
	cp	4
	jp	c,u26841
u26840:
;life5.c: 182:                     *pY=3    ; continue;
	ld	hl,(_pY)
	ld	(hl),3
	jp	l88
u26841:
	ld	hl,(_P)
	inc	hl
	ld	(_P),hl
	jp	l88
l99:
;life5.c: 186:                 if(C==3) {
	ld	a,(ix+-1)
	cp	3
	jp	nz,l88
;life5.c: 187:                     *pY=2    ; ++P;
	ld	hl,(_pY)
	ld	(hl),2
	ld	hl,(_P)
	inc	hl
	ld	(_P),hl
;life5.c: 188:                 }
;life5.c: 189:             }
l88:
	ld	hl,_Y
	inc	(hl)
	ld	hl,(_pY)
	inc	hl
	ld	(_pY),hl
l89:
	ld	hl,_Y
	ld	e,(hl)
	ld	d,0
	ld	hl,_Y2
	ld	l,(hl)
	ld	h,d
	inc	hl
	call	wrelop
	jp	nc,l86
;life5.c: 190:         }
	ld	hl,_X
	inc	(hl)
	ld	de,71
	ld	hl,(_pX)
	add	hl,de
	ld	(_pX),hl
l85:
	ld	hl,_X
	ld	e,(hl)
	ld	d,0
	ld	hl,_X2
	ld	l,(hl)
	ld	h,d
	inc	hl
	call	wrelop
	jp	nc,l82
;life5.c: 191:         --X1; --Y1; ++X2; ++Y2;
	ld	hl,_X1
	dec	(hl)
	ld	hl,_Y1
	dec	(hl)
	ld	hl,_X2
	inc	(hl)
	ld	hl,_Y2
	inc	(hl)
;life5.c: 192:     }
	jp	l52
	psect	data
u19:
	defb	48,48,48,48,48,0
u29:
	defb	76,73,70,69,10,0
u39:
	defb	67,82,69,65,84,73,86,69,32,67,79,77,80,85,84,73
	defb	78,71,32,77,79,82,82,73,83,84,79,87,78,44,32,78
	defb	69,87,32,74,69,82,83,69,89,10,10,10,69,78,84,69
	defb	82,32,89,79,85,82,32,80,65,84,84,69,82,78,58,10
	defb	0
u49:
	defb	10,10,0
u59:
	defb	71,69,78,69,82,65,84,73,79,78,58,32,0
u69:
	defb	9,9,80,79,80,85,76,65,84,73,79,78,58,32,0
u79:
	defb	32,73,78,86,65,76,73,68,32,0
	psect	bss
_X2:
	defs	1
_Y1:
	defs	1
_X3:
	defs	1
_Y2:
	defs	1
_X4:
	defs	1
_Y3:
	defs	1
_Y4:
	defs	1
_A:
	defs	3621
_B:
	defs	1024
_L:
	defs	1
_c_:
	defs	1
_X:
	defs	1
_Y:
	defs	1
_pX:
	defs	2
_pY:
	defs	2
_p:
	defs	2
_X1:
	defs	1
	psect	text
	end
