[net.sources.mac] A new version of LIFE

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 &#1M_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