MODULE››BYTE ARRAY disp(800), work(800)›CARD px, lptr›INT base=[40], xptr, yptr, cntr, x, y›BYTE none=[0], live=[1], born=[3], › dead=[2], temp, py, inp› ›INCLUDE "D:SYS.ACT"››PROC Banner ()››CHAR ans››Graphics (0)›Poke (1016,1)›Poke (710,$C3)›Position (2,3)›PrintE (" New Life 1.0 (Life revisited)")›PrintE (" Copyright (c) 1986 by Dan Rhea")›PrintE ("This program is in the Public Domain")›Position (0,9) ›PrintE (" This Program Was Written Using ACTION!")›PrintE (" ACTION! is a Trademark of ")›PrintE (" Action Computer Services")›PrintE (" ")›PrintE (" Portions of this program are")›PrintE (" Copyright (c) 1984, A.C.S")›Position (0,22)›Print (" Òåôõòî to continue")›InputS (ans)››RETURN››PROC Look()››cntr=0›IF x>0 THEN› cntr=cntr+work(lptr-1) ; W›FI›IF x>0 AND y>0 THEN› cntr=cntr+work(lptr-1-base) ; NW›FI›IF y>0 THEN› cntr=cntr+work(lptr-base) ; N›FI›IF x<39 AND y>0 THEN› cntr=cntr+work(lptr+1-base) ; NE›FI›IF x<39 THEN› cntr=cntr+work(lptr+1) ; E›FI›IF x<39 AND y<19 THEN› cntr=cntr+work(lptr+1+base) ; SE›FI›IF y<19 THEN› cntr=cntr+work(lptr+base) ; S›FI›IF x>0 AND y<19 THEN› cntr=cntr+work(lptr-1+base) ; SW›FI›IF cntr=2 THEN ; Life› IF work(lptr)=live THEN› disp(lptr)=live› ELSE› disp(lptr)=none› FI›ELSEIF cntr=3 THEN ; Birth› IF work(lptr)=live THEN› disp(lptr)=live› ELSE› disp(lptr)=born› FI›ELSE ; Death› IF work(lptr)=live THEN› disp(lptr)=dead› ELSE› disp(lptr)=none› FI›FI››RETURN››PROC Init()››Graphics (0)›Poke (710,$C3)›PrintE (" ")›PrintE (" ")›PrintE ("™ ")›PrintE ("™    Îå÷ Ìéæå ±®°  âù Äáî Òèåá    ")›PrintE ("™ ")›PrintE ("Š•••••••••••••••••••••••••••••••••ˆ")›PrintE (" ")›PrintE (" ")›PrintE (" This is basicly your standard Life")›PrintE (" program except that this one will ")›PrintE (" show births in green and deaths ")›PrintE (" in red. The empty cells are the ")›PrintE (" black ones and the live cells are ")›PrintE (" yellow. The initial groth will be ")›PrintE (" random. But you have some control ")›PrintE (" over distribution by giving each ")›PrintE (" cell a 50% chance (1) to less ")›PrintE (" than 10% (9) by selecting 1-9 for ")›PrintE (" the cell distribution. ")›DO › Position (2,22)› Print (" Enter 1 to 9 for Distribution :")› inp=InputB()› IF inp<10 AND inp>0 THEN EXIT FI›OD ›RETURN››PROC Plop ()››px=x py=y›Plot(px,py)››RETURN››PROC Main()››Banner()›DO›Init()›Graphics (3)›Poke (708,$DA) ; Yellow›Poke (709,$34) ; Red›Poke (710,$C6) ; Green›Poke (752,1) ›PrintE ("Commands: Óôáòô to re-run program")›PrintE (" You must Óåìåãô to freeze screen")›Print (" hold key Ïðôéïî to exit program")›FOR yptr=0 TO 19 DO› FOR xptr=0 TO 39 DO› lptr=yptr*base › lptr=lptr+xptr› temp=Rand(inp+1)› IF temp=1 THEN› disp(lptr)=live› work(lptr)=live› ELSE› disp(lptr)=none› work(lptr)=none› FI› color=disp(lptr)› x=xptr y=yptr› Plop ()› OD›OD›DO› FOR yptr=0 TO 19 DO› FOR xptr=0 TO 39 DO› lptr=yptr*base › lptr=lptr+xptr› y=yptr x=xptr› Look ()› color=disp(lptr)› Plop ()› OD› OD› FOR lptr=0 TO 800 DO› IF disp(lptr)=dead THEN› work(lptr)=none› ELSEIF disp(lptr)=born THEN› work(lptr)=live› ELSE› work(lptr)=disp(lptr)› FI› disp(lptr)=work(lptr)› OD› FOR yptr=0 TO 19 DO› FOR xptr=0 TO 39 DO› lptr=yptr*base › lptr=lptr+xptr› color=disp(lptr)› y=yptr x=xptr› Plop ()› OD› OD› IF Peek(53279)=5 THEN› DO UNTIL Peek(53279)=7 OD› FI› IF Peek(53279)=6 THEN› DO UNTIL Peek(53279)=7 OD› EXIT› FI› IF Peek(53279)=3 THEN› DO UNTIL Peek(53279)=7 OD› inp=99› EXIT› FI›OD›IF inp=99 THEN EXIT FI›OD›Break()›::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::