Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

: Have you CREATE your DOES> today;

Name: Anonymous 2015-03-13 0:32

Talk about Forth in this thread. ; immediate

Don't POSTPONE your threads. I know there is a Forth programmer out there. I saw that Forth program you poasted. Please poast moar foarth.

THANK YOU

Name: Anonymous 2015-03-13 13:33

Here's a persistent implementation of Conway's Game of Life (in ANSI Forth; should run unmodified on at least GForth, among others. Requires the BLOCK wordset):

VARIABLE STATEBLK
VARIABLE LIFEBLK
VARIABLE STATEP

\ : -ROT ROT ROT ;

: WRAPY DUP 0< IF DROP 15 THEN DUP 15 > IF DROP 0 THEN ;
: WRAPX DUP 0< IF DROP 63 THEN DUP 63 > IF DROP 0 THEN ;
: WRAP WRAPY SWAP WRAPX SWAP ;
: DECEASED? WRAP 64 * + LIFEBLK @ BLOCK + C@ BL = ;
: LIVING? DECEASED? 0= ;
: (-1,-1) 2DUP 1- SWAP 1- SWAP LIVING? 1 AND ;
: (0,-1) >R 2DUP 1- LIVING? 1 AND R> + ;
: (1,-1) >R 2DUP 1- SWAP 1+ SWAP LIVING? 1 AND R> + ;
: (-1,0) >R 2DUP SWAP 1- SWAP LIVING? 1 AND R> + ;
: (1,0) >R 2DUP SWAP 1+ SWAP LIVING? 1 AND R> + ;
: (-1,1) >R 2DUP 1+ SWAP 1- SWAP LIVING? 1 AND R> + ;
: (0,1) >R 2DUP 1+ LIVING? 1 AND R> + ;
: (1,1) >R 1+ SWAP 1+ SWAP LIVING? 1 AND R> + ;
: NEIGHBORS (-1,-1) (0,-1) (1,-1) (-1,0) (1,0) (-1,1) (0,1) (1,1) ;
: BORN? NEIGHBORS 3 = ;
: SURVIVES? 2DUP LIVING? -ROT NEIGHBORS 2 = AND ;
: LIVES? 2DUP BORN? -ROT SURVIVES? OR ;
: NEWSTATE STATEBLK @ BLOCK UPDATE STATEP ! ;
: STATE! STATEP @ C! 1 STATEP +! ;
: ALIVE [CHAR] * STATE! ;
: DEAD BL STATE! ;
: ITERATE-CELL 2DUP SWAP LIVES? IF ALIVE ELSE DEAD THEN ;
: ITERATE-ROW 0 BEGIN DUP 64 < WHILE ITERATE-CELL 1+ REPEAT DROP ;
: ITERATE-BLOCK 0 BEGIN DUP 16 < WHILE ITERATE-ROW 1+ REPEAT DROP ;
: GENERATION LIFEBLK @ STATEBLK @ LIFEBLK ! STATEBLK ! ;
: ITERATE NEWSTATE ITERATE-BLOCK GENERATION ;
: DONE? KEY [CHAR] Q = ;
: PROMPT CR ." PRESS Q TO EXIT; OTHER KEY TO CONTINUE" ;
: VIEW PAGE LIFEBLK @ LIST PROMPT ;
: LIFE BEGIN VIEW ITERATE DONE? UNTIL ;

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List