larryh@tekcbi.UUCP (Larry Hutchinson) (02/05/85)
This posting represents several firsts for me. It is the first time I have ever posted something to the net, it is my first Macintosh program and it is my first non-trivial c program (so be gentle, please!). It was written in Aztec C and assembler during the last month or so of weekends. This version of LIFE differs from Bill Atkinson's version in two ways: 1) it wraps around & 2) it allows 3 different densities [128x72, 256x144 & 512x288]. If anyone thinks they have an algorithm that is faster, I would enjoy hearing about it (but first prove that it is faster than my 246,000 cells/sec!). There are a number of obvious improvements that need to be made (cut, paste, fat bits for hi-res mode, not blasting the cursor or DAs [I go directly to the screen, thus will not run on a Mac XL]) and I hope to get to them some day. Larry Hutchinson, Tektronix, Inc. PO Box 500, MS Y6-546, Beaverton, OR 97077 { decvax,allegra }!tektronix!tekcbi!larryh ----------------cut here-------------------- (This file must be converted with BinHex.Hex) #APPLLAZH$2000 ***COMPRESSED ***RESOURCE FORK ( 0 !>1 6D0 ,( ( ( ( ( ( ( ( ( !@ H #+ @ @#,P_/ !J? !+X ( %!^A!X*TC^S$/M_7@K2?[00J="9TZZ B)<3T)G ($ZZ#XH@;P $(F\ ""1O PP+P 02.<? #X ,A#0P-+ (.1 XU%@ ((B#CD2,!4<C_^# P</[D1^)08 +B 8 ("( XI D&28 QH'&@B@ B(&(@K&"LX(B T:!PH)&@L2$ ($:$),0DP23"),-1S__23-\ ^$YU(&\ !"(O @P+P , ($CG#P@H02)4)&P !"9L @HBBE+ 0I20 (Y$ _ "(9 ("0:)AL@ 8""@(.U@;>!1H'"@"89*!HJ&R0#+@.$A(2% (,Z$SH4O![F#NX-&@\:"*ADL&BX;* 6(AHB'O86_A4:% (,J$+!F,FHR;PH;*@,""S(# A,B#B(6(ALB0B(&(@(B? ("#$4U=FF%2/3-\0\$YU(&\ !$) -CP "$)",@#B2>12 (%-#9OCC2C#"4D"P? $ 9N1"0#8\ A"@C( XDE Y^*2 ($3?YI)30V;RXXH@PE) L'P! &;>3G5(YPD0(&\ $")O ( 4)&\ &# O !PR+P >/CP 0$IO ")G 6- ?$P38O ( @YZK5PL+ T<$R/ !#&\ @ @9P 4 QO $ (&< ( @GD#D2& ! T & 0DV%'*__S4QU')__!@ !8 ()Y XT=@ 8- !@ ,0D,6&-9#-/$P %'*__34QU') (/_H8 ,M+\ @ F2M;'GD#E1V !XT & !!"0Q88 (.5#*#$P "3$)L11RO_PU,?6QU')_^),WPB03G5.5O_Z ($CG _/%4 3KH,/E1/*T#_T#\\ 0!.N@PP5$\K0/_4 (#\\ 0!.N@PB5$\K0/_8/SP! $ZZ#!143RM _]P_/ $ ($ZZ# 943RM _^ _/ ! 3KH+^%1/*T#_Y#\\!@!.N@OJ (%1/*T#_Z$AM_-1.NA .6$](;?S93KH0!%A/(?S_____ ( IX2&W^PJANJ/X_//__0F=.NA &J1).N@3B0J>I>ZA0 ($7M_NA#[?Y.)-DDV4AM_O _/ $/SP M_NY92C\* (#1M_NQ92C\*J*<[? R_P [?/___P(V+?[L64,[0_\$ (#8M_NY20SM#_P9%[?[X0^W_ "39)-E"ITAM_PA(;?[X ($AM_-Q.N@]T6$\O #\\ 0!"9R\\_____T)G0J>I$R ? ("M _Z0O+?^DJ'-%[?[X(FW^PM/\ $"39)-E(;?[X (#\\ $_/ !J*DO+?_H3KK]GEA//SP DZZ!]A43S8M (/\ 4D/M0TC#-"W_ E)"2,*%_ (2,+6@M:\ >G "M# (/^\3KH(0$)G/RW_QC\M_\(_+?_ +RW_O"\M_^@O+?_0 ($ZZ_93>_ 40FW_Q$)M_\A"IZEU(!\K0/_,2FW_Q&< ( !,0J>I=2 ?-BW_R$A#0D-(0]:M_\RP@V, #).N@3* ($)G/RW_QC\M_\(_+?_ +RW_O"\M_^@O+?_03KK].M[\ ( 40J>I=2 ?*T#_S*FT0F<_//__2&W_K*EP,!\=0/__ (# M_ZQ@ #,0F<O+?^V2&W_J*DL,!\]0/_\,"[__& ( !@0J<O+?^VJ3T@'R\ 3KH P%A/8 7$AM_ZPO+?^H (*FS8 3D*GJ20@'R1M_ZBUP&< PO+?^HJ1]@ ( ($AM_[:H<2\M_[9.N@406$]@ @ +_DO^H_[8 O^V (+!\ 9D ,XT P.P#H3OL & %!@ !,-BW_NL9\ ( !9P F #PO+?^DJ',O+?^DJ2(O+?^DJ2-@ F ( "_R8 O^T +_M/_( +_N+!\ ED ,XT P.P#B ($[[ !@ /ZT3-\ $Y>3G5.5O_82.< "8N AT$.2K (#U#_]P];@ *_]HP+O_<8 "( QN '_VF\ !XO+?[4 (#\N_]I(;O_BJ49"9TAN_^*IMC ?8 +$*G/SPB/4*G ("\\_____ZE\(!\M0/_>+R[_WJAS0J=(;O_8J9$O+O_> (*F#8 !ZDZZ#,!"9S1N_]I32C\*J<(P'TI 9@ *"\M (/^DJ',P+O_:8 #F !9@ 28 #E- 9_!30&?P (%- 9_!@ &H,"[_VF 1A*;?_$9@ ##M\ '_Q& ( &0FW_Q$IM_\1G 4+RW^X#\\ %(;?S4J4=@ 0 ("\M_N _/ !2&W\V:E'8 Z$)G-BW_PL;M_\ _ R\M (/_03KH']E!/J%)"9S\M_\8_+?_"/RW_P"\M_[PO+?_H ("\M_]!.NOKPWOP %$)M_\0O+?[@/SP 4AM_-FI1ZA3 (& )8V+?_"QNW_P#\#+RW_T"\\ ! $ZZ"'+>_ * (*A20F<_+?_&/RW_PC\M_\ O+?^\+RW_Z"\M_]!.NOJ8 (-[\ !2H4V %!"9TZZ!(143V $0_/ !3KH$=E1/ (& #8_/ "3KH$:%1/8 * "_MK_'/]N ( @ " (/^T_\#_SK!\ ID ,XT P.P#@3OL & '0P+O_: (& !Y";?_(8 (CM\ ![_R& !@[? !X_\A@ . (%- 9^!30&?D4T!GZB\M_N0_+?_*0F>I13MN_]K_RB\M (/[D/RW_RC\\_P"I16 "!30&< _=Z0? #_9P#^*E- (&< _BA30&< _F!30&>.0F>I.$S? !.7DYU3E;__DCG ( J3!"IS\\ %(;?SD3KH*ZEA/+P"I,2 ?*T#^U"\M (/[42&W\YDZZ"M)83R\ J3,O+?[4+SQ$4E92J4U"IS\\ ( $ 2&W\_$ZZ"K)83R\ J3$@'RM _M@O+?[82&W] 4ZZ ( J:6$\O *DS0J<_/ $!2&W]!DZZ"H983R\ J3$@'RM (/[<+RW^W$AM_0M.N@IN6$\O *DS0J<_/ $"2&W]'4ZZ ( I:6$\O *DQ(!\K0/[@+RW^X$AM_25.N@I"6$\O *DS ($*G/SP! TAM_5I.N@HN6$\O *DQ(!\K0/[D+RW^Y$AM (/U@3KH*%EA/+P"I,SM\ '_RD)N__Y@ &4F[__@QN ( %__YL 8-B[__DC#Y8-%[?[4+S(X $)GJ35@W*DW ($S? !.7DYU3E;_^DCG M;?_0__HK;?_4_^PK;?_8 (/_P*VW_W/_T/RW_P"\M_]0O+?_D-BW_PE-#QNW_P$C# (-:N__HO TZZ]OS>_ ./RW_P"\M_]@O+?_D+R[_^DZZ (/;DWOP #C8M_\#E0S\#+RW_X"\M_]A.N@74WOP "D)N (/_^8 !E)N__XT;?_"4THR;O_^LLIL !"/RW_P"\M (/_T+RW_Y#8M_\!(P]:N__HO TZZ]I#>_ ./RW_P$AM (/_L+R[_^DZZ]NS>_ *-BW_P$C#UZ[_^F"L*VW_X/_T (#\M_\!(;?_L+R[_^DZZ]L;>_ *3-\ $Y>3G5.5O_R ($CG M;@ (__PF+@ (=!#DJU.#-"W_QN1K/4/_\B8N ( (4X,T+?_&Y&L]0__T/R[_]#\N__).N@$D6$\]0/_V ($IN__9F *-'P 6 25RC\*/R[_]#\N__).N@", (%Q/0F>I<S ?2D!G !V2&[_^*ER)&[_^+7N__QG !B ($)G+R[_^$AM_OBHK3 ?2D!G !.+6[_^/_\)B[_^'00 (.2C4X,T+?_&Y&L]0__R)B[_^%.#-"W_QN1K/4/_]$IN (/_V9@ "C1\ %@ $E<H_"C\N__0_+O_R3KH #EQ/ (&" 3-\ $Y>3G5.5O_X2.< *A2-BX ",;M_\!(P]:M (/_0+4/__$IN QG 4+R[__#8N I(PR\#J%Y@ 0 ("\N__PV+@ *2,,O ZA?/SP 3\M_\8_+@ (/RW_P"\M (/^\+RW_Z"\M_]!.NO9*WOP %*A33-\ $Y>3G5.5O_\ ($CG M;?_0__PV+@ (QNW_P$C#UZ[__$)G+R[__#8N ( *2,,O ZA=,!],WP 3EY.=4Y6 !(YP +RW^X#1M (/_&7DH_"D)GJ44[;@ (_\8O+?[@-&W_QEY*/PH_//\ (*E%=@$T+?_&Y6-T0$C"A<,[0O_ -BW_!)9M_P!50W0! (#(M_\;C8DC#A\([0__"0F<V+?_"QNW_P#\#+RW_T$ZZ ( )Z4$](;?[XJ*-";?_$+RW^X#\\ %(;?S9J4=,WP ($Y>3G5.5O_\2.< $)G-BW_PL;M_\ _ R\M_]!.N@(\ (%!/-BW_PL;M_\!(PX?\ )(P]:M_] M0__\+R[__#8M (/_ 2,.'_ "5$-(PR\#J%XV+?_ 2,/6KO_\+P,V+?_ ($C#A_P DC#+P.H7C8M_\!(P]:N__PO S8M_\!(PX?\ ( "4D-(PR\#J%XV+?_ 2,/6KO_\+P,V+?_ 2,.'_ " (%1#2,,O ZA>-BW_P.-#2,/6KO_\+P,V+?_ 2,.'_ " (%)#2,,O ZA>3-\ $Y>3G4@3Y'\ @ * M64^I=5A/ ($Y6_\H@/ 4-K"D'M_7A"6%'(__Q93R0\0T]$12\" (#\\ &IH"1?+!+,O #___]8AD'N_\HQ> D !A#[O_\ (#(\ 0!A9F<.(5$ )$7M_-0A2@ @H (R/ $!85!G)"1- (&$F)$9A(D?M 36^ DTH (B$6L.H (D$=2*)H)0BU') (/_T3EY.^O*>H (F$6L$* UA#* ")A%K!"@&80).=: " ("H1V;)8 %'+__9.=21X"E D4M3J !@P$D?J *TFV<& ($J;4<C_^# ;-E/7RK)39PS6_ ,4<C_]D* 3G4@*P $ (,"\ /___R1X"E D4M"2(4D ("%\ ! D,7P 0 L ("% "Z@ D)H "Q*D4YU2&W^PJAN< <!^ %= ?@"'T(X ( CR(?S_____"=993S\\ !"IN"!?(% AV H\(=@*0$AM (/V,(=<)WJAO68^HV"'7">X@> G>2&@ $*C?+S@)[JAY ($*X"=99CZC8(=\)\D*X"H1"N ID0K@*:$YU(&\ !# O ( (,B\ "E- :P80P5'(__Q.=4Y6 !"K?[&+RX "$ZZ ( #^6$].7DYU3E8 $*M_L8V+@ (2$-"0TA#+P-.N@#@ (%A/3EY.=4Y6 K;@ (_L8O+@ (3KH L%A/.T#^RB\N ( (3KH F%A/3KH KDY>3G5.5@ 2.< $"1M_L:U[@ ( (&<(+RX "&&^6$\_+@ ,89A43R9 2H!G*K?N AG)#1N ( ,M.W^RF,&-BW^RF $-BX ##\#+PLO+@ (3KH $-[\ ( *( M,WP@ 3EY.=2!O 0B;P (,"\ #+/(9@).=6,0 (-# TL!30&L&$R!1R/_\3G530&OZ$MA1R/_\3G4@;P $ (* ?3OH ."!O 2@(4J :@1.^@ 63OH +C M__A.=2 O ( $H1Y.^@ ,0^W_^#* 0D!.=4/M__@R@" (3G5#[?_X (#* 3G5#[?_X0E%.=4Y6 !(YP@ 2JW]=&<&)&W]=$Z2 ($)$8 )21+A\ IL"C\$3KH &%1/8.X_+@ (3KH"K%1/ ($S? !!.7DYU3E;_L$CG#! X+@ ()FW^T+A\ !M!KA\ ( );Q [?/_]__IP_TS?"#!.7DYU2,0F!..#.C,X $IS (#@ 9S"Z;?_\9RJZ?/_W;0:Z?/_Z;QY(Q"8$XX,]<S@ (/_(0F=(;O^P0F=.N@ @,!\[0/_Z2,0F!..#0G,X $IM (/_Z9P1P_V"D0D!@H")?,!\@7V8$H %@ J0!/H!.T4Y6 (/]P2.<($"1N Q"$C\\ #HO+@ (3KH!?%Q/)D!*@&8@ ($7N_\ M2O^"0F=(;O]P0F=.N@%.,!\X+O^&)FX "& B ($(3+RX "&$J6$\X "1+4HL4O Z2D1F"D) 3-\($$Y> ($YU+PLO+@ ,3KH!0E!/, 1@Z$Y6_W!(YP@0)FX "!8K ( !2(-*0V96%A-(@[9\ #%M3!832(.V? Y;D(6$TB# ()9\ # ]0__&1>[_<"U*_\)"+O]P0F[_S$)G2&[_L$)G ($ZZ 2XP'SM __I*0&<*0D!,WP@03EY.=3 N_\9@\G@! (& "4D0]1/_,1>[_<"U*_\)"+O]P0F=(;O^P0F=.N@#R (# ?2D!F'B\+2&[_<$ZZ 5)83R\ 81A03TI 9@8P+O_& (&"N8+X[?/_=__I"0&"B3E8 $CG"!@F;@ (*&X #!83 ($B#/P-.N@"05$\_ !842(,_ TZZ ()43S8?. .80$I$ (&<*, 1,WQ@03EY.=21+4HM*$F<()$Q2C$H29L)"0&#D (")?,!\@7V8$H!1@ J04/H!.T2!O 0P+P ($AAG"K( (&;X( A3@$YU0H!.=2!O 0@"")O @0V6;\3G4P+P $ (,!\ /^P/ !@8PJP/ !Z8@20/ @3G4P+P $P'P _[ \ ( ! 8PJP/ !:8@30/ @3G4B7S ?(%]F!* '8 *D!SZ ($[1!7-H96QL,"W__F<J3E;_P$'N_\!#^O_J(4D $C% ( 60F@ &D*H !R@ * !('@*?#%N @ &*GT(&\ !")( (! \ 2$!# $ %F^%-(D<D@"!* ( E.=2!?(!^@,D[0 ("!O 0B2" (0D$2&6 "$-E1R?_\0A!.=0 *13=&]P ( !';P!,05IL:69E !0 86)O=70@3$%:;&EF93LM+2TM ("TM* !&:6QE %%U:70 161I= !#=70H.T-O<'DH.U!A ('-T92@ 0V]N=')O; !';SM#;&5A<CM286YD;VT[("@[ ("TM+2TM+2@[("@[2&D@4F5S.TUE9"!297,[3&]W(%)E (', 4W!E960 1F%S="$2.TUE9&EU;3M3;&]W ( "( 0 ! 1H!X@ 0 B/0UA8F]U="!, ($%:;&EF90 0 &P !L PP ,, ( & !@ , # P , P P , , ( !ML ;; ( , !@ # 8 -AML-C8;;#8 , !@ # ( & #_P _\ /_ #_Q__X_\?_^/_' (/_X_\?_^/_'__C_Q__X_\?_^ '__@ !__X ?_^ ' (/_X ?_^ '__@ !__X ?____W__ (/__?____W____]_____?____W____]_____?____W__ (/__?____W____\ '05!03 !Q,05I( ( %)0TXC " 1E)%1@ @ %T ( ( * $8 +P&%"$M*;VAN($-O;G=A>2=S(&=A;64@ (&]F($Q)1D4@*'EE<RQA9V%I;B$I#79E<B P+C L(*D@ (#$Y.#4@8GD@3&%R<GD@2'5T8VAI;G-O;@ #, ( \ KP&8"/%0;&5A<V4@<&%S<R!T:&ES('!R;V=R86T@ (&%L;VYG('1O('EO=7(@9G)I96YD<RX-268@>6]U(&QI (&ME(&ET+"!P;&5A<V4@<V5N9"!A(&9E=R!B=6-K<R!T (&\Z#2 @("!,87)R>2!(=71C:&EN<V]N#2 @(" V.34P ("!35R!*=6YI<&5R(%1E<G(-(" @($)E879E<G1O;BP@ ($]2(" Y-S P-0U0;&5A<V4@:6YC;'5D92!A;GD@<W5G (&=E<W1I;VYS(&9O<B!I;7!R;W9E;65N=',@*&-U="QC (&]P>28@<&%S=&4@87)E('!L86YN960I+@ +T (*P T0#U! EO:VEE+69I;F4 ! %Y$ !:1 (,( 1R< %P < ,( !D-/1$4 @ Z1$Q/1P %Y) ($-.(P &I&4D5& =D).1$P ""3$%:2 (Y$ ($E43 )H /__( ?__, ' ! ( #__P $Q@ (CW__P $\ (#__P $^8 ( " __\ !3J " __\ !3U __\ $P 5%0 B/?__ 5&0 ***END OF DATA ***CRC:49B5