00010 REM LIFE / Life simulation game 00011 REM (C) G J ARMITAGE 1982 00012 REM by G. J. Armitage, Melbourne Grammar School 00013 REM VERSION 1.0 / 6-11-82 00014 REM for BBC computer 00110*FX14,6 00120*FX4,1 00130MODE7 00140=&7000 00150FORI=0 TO2 STEP2 00160P%=&7009 00170[OPT I 00180LDX#0 00190.LOOP 00200LDA&7B00,X 00210STA&7A00,X 00220DEX 00230BNE LOOP 00240LDX#0 00250.NCELL:TXA:PHA 00260LDY#9 00270LDA#0:STA&7000 00280.NDIS 00290DEY:BEQ DONE:TXA 00300CLC:ADC&7000,Y 00310TAX 00320LDA&7A00,X 00330CMP#79 00340BNE NDIS 00350INC&7000 00360JMP NDIS 00370.DONE:PLA:TAX 00380LDA&7000 00390CMP#2:BCC DEAD 00400CMP#4:BCS DEAD 00410CMP#3:BEQ ALIVE 00420JMP NEX 00430.DEAD:LDA#46 00440STA&7B00,X:JMP NEX 00450.ALIVE:LDA#79 00460STA&7B00,X 00470.NEX 00480DEX:BNE NCELL 00490RTS 00500.SCREEN:LDX#0:.NEXL:LDY#16:.NEXC:LDA&7B00,X:JSR&FFEE:INX:BEQ DNE:DEY:BNE NEXC 00510JSR&FFE7:JMPNEXL 00520.DNE:RTS 00530] 00540NEXTI 00550FORI=0 TO 7:READ D:?(&7001+I)=D:NEXTI 00560DATA 1,1,14,2,14,1,1,-17 00570FOR I=&7B00 TO&7BFF 00580?I=46 00590NEXT 00600CLS:CALL SCREEN 00605PROCinit 00607 VDU23,1,1,0;0;0;0 00610X=7 00620Y=7 00630PRINTTAB(X,Y);:K$=GET$ 00640 IFK$="R" GOTO720 00645 IF K$="C" GOTO570 00650IF K$=CHR$(138) AND Y<15 Y=Y+1 00660IF K$=CHR$(139) AND Y>0 Y=Y-1 00670IF K$=CHR$(137) AND X<15 X=X+1 00680IF K$=CHR$(136) AND X>0 X=X-1 00690IF K$="N" PRINTTAB(X,Y);"O";:?(&7B00+X+16*Y)=79 00700IF K$="D" PRINTTAB(X,Y);".";:?(&7B00+X+16*Y)=46 00710GOTO630 00720 GEN=0 00730CALL&7009:VDU23,1,0,0,0,0,0,0,0,0 00740K$=INKEY$(0):*FX15,0 00750IF K$="S" GOTO600 00755IFK$=" " FOR N=1 TO200:NEXT 00760PRINTTAB(0,0);:CALL SCREEN 00770PRINTTAB(16,5);"…GENERATION‡";GEN 00780GEN=GEN+1 00790GOTO730 00800*FX4,0 00810PRINTTAB(0,16); 00820END 01000DEFPROCinit 01010PRINTTAB(10,17);"ƒLIFE SIMULATION†" 01020PRINTTAB(10);"By G.J.Armitage 1982" 01030PRINT"‚Use the cursor keys to move the cursor." 01040PRINT"ƒN) New cell D) Delete cell" 01050PRINT"‚R) Run generation S) Stop generation" 01060PRINT"ƒC) Clear array." 01070PRINTTAB(19,6);"“5 5w!w!" 01080PRINTTAB(19,7);"–u055 u0" 01100ENDPROC 01200 REM