DataMuseum.dk

Presents historical artifacts from the history of:

CP/M

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about CP/M

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦d07eff52e⟧ TextFile

    Length: 2560 (0xa00)
    Types: TextFile
    Names: »LIFE.BAS«

Derivation

└─⟦016ef1d53⟧ Bits:30005210 BASIC Demo
    └─ ⟦this⟧ »LIFE.BAS« 

TextFile

10 CLEAR 2000
20 DEFINT I-N
30 I=0:J=0:K=0:L=0:IY=0:IZ=0:JY=0:JZ=0
40 WIDTH 80
50 DIM A$(2,24)
60 DIM MM(1920)
70 PRINT SPC(30);"GAME OF LIFE
80 PRINT
90 PRINT "            ENTER ASTERISKS AND BLANKS TO FORM A CIVILIZATION"
100 PRINT "            ENTER (CR) ONLY ON A LINE TO FINALIZE CIVILIZATION"
110 PRINT
120 IR=1 : IC=1 : JC=0
130 FOR I=1 TO 24
140 LINE INPUT "MORE ASTERISKS? ";A$(1,I)
150	IF A$(1,I)="" THEN 190
160 IF A$(1,I)="R" THEN 800
170	J=LEN(A$(1,I)) : IF JC<J THEN JC=J
180	NEXT
190 INPUT "HOW MANY GENERATIONS DO YOU WANT TO SEE";TU
200 JR=I-1:JJ=1
210 REM
220 TP=TP+1
240 REM CENTER PATTERN
250 IF JC=0 THEN PRINT "        D*E*A*T*H" : GOTO 880
260 NR=(24-JR-(IR-1))/2
270 NC=(80-JC-(IC-1))/2
280 NN=3-JJ
290 FOR I=1 TO 24 : A$(NN,I)="" : NEXT
300 FOR I=IR TO JR
310	IF NC>0 THEN A$(NN,I+NR)=SPACE$(NC)+A$(JJ,I) ELSE
«nul»		A$(NN,I+NR)=MID$(A$(JJ,I),1-NC)
320	A$(JJ,I)=""
330	NEXT
340 IC=IC+NC : JC=JC+NC : IR=IR+NR : JR=JR+NR
350 JJ=NN
360 REM
370 REM PRINT UNIVERSE
380 FOR I=1 TO 24
390	IF A$(JJ,I)="" THEN PRINT
«nul»		ELSE PRINT LEFT$(A$(JJ,I),JC)
400	NEXT
410 PRINT TAB(35);"GENERATION";IG
415 IF IG=TU THEN 880
420 IG=IG+1
430 REM
440 REM CYCLE NEXT GENERATION
450 IF JC=80 THEN JC=79
460 IF JR=24 THEN JR=23
470 NN=3-JJ
480 IF IC=1 THEN IC=2
490 IF IR=1 THEN IR=2
500 FOR I=IR TO JR
510	LIM=LEN(A$(JJ,I))
520	IF LIM>79 THEN LIM=79
530	FOR J=IC TO LIM
540		IF MID$(A$(JJ,I),J,1)=" " THEN 560
550		K=(I-1)*80+J:MM(K)=MM(K)+42:MM(K-81)=MM(K-81)+1:
«nul»		MM(K-80)=MM(K-80)+1:MM(K-79)=MM(K-79)+1:MM(K-1)=MM(K-1)+1
«nul»		:MM(K+1)=MM(K+1)+1:MM(K+79)=MM(K+79)+1:MM(K+80)=MM(K+80)+1
«nul»		:MM(K+81)=1
560		NEXT
570	NEXT
580 IA=IR-1 : IB=JR+1 : JA=IC-1 : JB=JC+1
590 IC=81:JC=0:IR=25:JR=0
600 FOR I=1 TO 24:A$(JJ,I)="":A$(NN,I)="":NEXT
610 FOR I=IA TO IB
620	A$(NN,I)=SPACE$(JB)
630	MC=0
640	K=(I-1)*80+JA-1
650	FOR J=JA TO JB
660		K=K+1
670		IF MM(K)=0 THEN 730
680		M=MM(K):MM(K)=0
690		IF M<>3 THEN IF M<>44 THEN IF M<>45 THEN 730
700		MC=J : IF IC>J THEN IC=J
710		IF JC<J THEN JC=J
720		MID$(A$(NN,I),J,1)="*"
730		NEXT
740	IF MC>0 THEN IF IR>I THEN IR=I
750	IF MC>0 THEN IF JR<I THEN JR=I
760	A$(NN,I)=LEFT$(A$(NN,I),MC)
770	NEXT
780 JJ=NN
790 GOTO 210
800 IR=1:JR=7:IC=1:JC=14
810 FOR I=1 TO JR:A$(1,I)=SPACE$(JC):NEXT
820 RANDOMIZE
830 FOR I=1 TO JC*JR*.6
840	MID$(A$(1,RND*JR+.5),RND*JC+.5,1)="*"
850	NEXT
860 JJ=1
870 GOTO 210
880 INPUT"MENU";A$
890 RUN "MENU"
«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»