Skip to content

Instantly share code, notes, and snippets.

@cfjedimaster
Created May 19, 2026 20:54
Show Gist options
  • Select an option

  • Save cfjedimaster/b582060738a1028badbd7c8da09f064b to your computer and use it in GitHub Desktop.

Select an option

Save cfjedimaster/b582060738a1028badbd7c8da09f064b to your computer and use it in GitHub Desktop.
10 REM *** CONWAY'S GAME OF LIFE ***
20 REM *** APPLESOFT BASIC - HIRES ***
30 REM
40 REM HIRES PAGE 1: 280 x 192 PIXELS
50 REM CELL SIZE: 7 PIXELS WIDE, 6 TALL
60 REM GRID: 40 COLS x 32 ROWS
70 REM
80 DIM G(41,33): REM CURRENT GENERATION
90 DIM N(41,33): REM NEXT GENERATION
100 REM
110 REM --- SETUP ---
120 HOME
130 PRINT "GAME OF LIFE"
140 PRINT ""
150 PRINT "INITIALIZING..."
160 REM
170 REM DEFINE GRID DIMENSIONS
180 CW = 7: REM CELL WIDTH IN PIXELS
190 CH = 6: REM CELL HEIGHT IN PIXELS
200 GW = 40: REM GRID WIDTH (COLS)
210 GH = 32: REM GRID HEIGHT (ROWS)
220 REM
230 REM --- RANDOM SEED ---
240 FOR I = 1 TO GW
250 FOR J = 1 TO GH
260 G(I,J) = INT(RND(1) * 2)
270 NEXT J
280 NEXT I
290 REM
300 REM --- SWITCH TO HIRES ---
310 HGR
320 HCOLOR= 3: REM WHITE
330 REM
340 REM --- DRAW INITIAL STATE ---
350 GOSUB 1000
360 REM
370 REM --- MAIN LOOP ---
380 GN = 0: REM GENERATION COUNTER
390 REM
400 REM COMPUTE NEXT GENERATION
410 FOR I = 1 TO GW
420 FOR J = 1 TO GH
430 REM COUNT LIVE NEIGHBOURS (WRAP)
440 NB = 0
450 FOR DX = -1 TO 1
460 FOR DY = -1 TO 1
470 IF DX = 0 AND DY = 0 THEN 500
480 XI = I + DX: YI = J + DY
490 IF XI < 1 THEN XI = GW
495 IF XI > GW THEN XI = 1
496 IF YI < 1 THEN YI = GH
497 IF YI > GH THEN YI = 1
500 NB = NB + G(XI,YI)
510 NEXT DY
520 NEXT DX
530 REM APPLY RULES
540 IF G(I,J) = 1 AND (NB = 2 OR NB = 3) THEN N(I,J) = 1: GOTO 570
550 IF G(I,J) = 0 AND NB = 3 THEN N(I,J) = 1: GOTO 570
560 N(I,J) = 0
570 NEXT J
580 NEXT I
590 REM
600 REM COPY NEXT -> CURRENT AND DRAW CHANGES
610 FOR I = 1 TO GW
620 FOR J = 1 TO GH
630 IF N(I,J) = G(I,J) THEN 680
640 G(I,J) = N(I,J)
650 IF G(I,J) = 1 THEN HCOLOR= 3: GOTO 670
660 HCOLOR= 0
670 GOSUB 1100
680 NEXT J
690 NEXT I
700 REM
710 GN = GN + 1
720 REM
730 REM SHOW GENERATION IN TEXT ROW
740 VTAB 22: HTAB 1
750 PRINT "GEN: ";GN;" ";
760 REM
770 REM CHECK FOR KEYPRESS TO QUIT
780 IF PEEK(49152) > 127 THEN POKE 49168,0: GOTO 900
790 REM
800 GOTO 400
810 REM
900 REM --- QUIT ---
910 TEXT : HOME
920 PRINT "LIFE ENDED AFTER ";GN;" GENERATIONS."
930 END
940 REM
1000 REM =============================
1010 REM SUBROUTINE: DRAW FULL GRID
1020 REM =============================
1030 FOR I = 1 TO GW
1040 FOR J = 1 TO GH
1050 IF G(I,J) = 1 THEN HCOLOR= 3: GOTO 1070
1060 HCOLOR= 0
1070 GOSUB 1100
1080 NEXT J
1090 NEXT I
1095 RETURN
1096 REM
1100 REM =============================
1110 REM SUBROUTINE: DRAW CELL (I,J)
1120 REM USES CURRENT HCOLOR
1130 REM =============================
1140 X1 = (I - 1) * CW
1150 Y1 = (J - 1) * CH
1160 X2 = X1 + CW - 2
1170 Y2 = Y1 + CH - 2
1180 FOR YP = Y1 TO Y2
1190 HPLOT X1, YP TO X2, YP
1200 NEXT YP
1210 RETURN

Comments are disabled for this gist.