A large commit.
[pdp8.git] / sw / src / life / config.pa
1
2 /********************************************************************
3 /********************************************************************
4 /
5 / GAME CONFIGURATION PARAMETERS
6 / CHANGE ONLY IF YOU KNOW WHAT YOU'RE DOING!
7
8 / SIZE OF THE PLAYING FIELD
9 / =========================
10
11 / THE PLAYING FIELD HAS A MAXIMUM SIZE OF 32 ROWS BY 64 COLUMNS.
12 /
13 / THE DATA IS ORGANIZED AS FOLLOWS:
14 / EVERY CELL OCCUPIES ONE BIT. THE CELLS OF EACH ROW ARE STORED IN
15 / A CONTIGUOUS PIECE OF MEMORY. BUT ONLY THE LOWER 8 BITS OF A WORD
16 / ARE USED!
17 / THE WHOLE GAME BUFFER CONSISTS OF 32 ROWS OF 8 WORDS EACH. THIS
18 / LEADS TO A MEMORY FOOTPRINT OF 256 WORDS.
19 / THERE'S ONE RESTRICTION: THE LAST COLUMN IS NOT USABLE DUE TO
20 / BORDER DETECTION. THAT MEANS THAT THE MAXIMUM SIZE OF THE ACTUAL
21 / CELL ROW IS ONLY 63!!!
22 / THE FOLLOWIN PARAMETERS DEFINE THE DIMENSIONS OF THE ACTUAL
23 / SIZE OF THE CELL ARRAY. KEEP IN MIND THAT THIS WILL NOT CHANGE
24 / THE MEMORY FOOTPRINT!
25 PCOLS=76
26 PROWS=23
27
28 / CELL ADDRESS CODING:
29 /
30 / 0RR RRR CCC CCC <- AS USED THROUGHOUT THE PROGRAM
31 /
32 / WHERE
33 / R - ROW ADDRESS BIT
34 / C - COLUMN ADDRESS BIT
35
36 / COLUMN ADDRESS IS SPLIT INTO
37 /
38 / WWW BBB
39 / WHERE
40 / W - WORD ADDRESS
41 / B - BIT IN WORD ADDRESS
42 /
43 / A CELL ADDRESS CAN BE TRANSLATED INTO A MEMORY OFFSET BY SIMPLY
44 / SHIFTING THREE BITS TO THE RIGHT AND MASKING WITH 0377:
45 /
46 / 000 0RR RRR CCC
47 /
48 / HERE THE LOWER 3 COLUMN ADDRESS BITS WHICH SPECIFY THE BIT ADDRESS
49 / IN A WORD ARE DISCARDED.
50
51 / HAS THE FIELD LIMITS OR IS IT ENDLESS? (CURRENTLY UNSUPPORTED!)
52
53 / ENDLESS=1
54
55
56 / BORDER BEHAVIOUR FOR LIMITED FIELD
57 / 0 - OFF FIELD POSITIONS ARE ASSUMED TO BE ALWAYS DEAD
58 / 1 - OFF FIELD POSITIONS ARE ASSUMED TO BE ALWAYS ALIFE
59
60 BORDER=0
61
62 / CHARACTER CODES TO USE FOR CELL DISPLAY OUTPUT
63 / 55:-
64 / 52:*
65 / DEAD=55
66 DEAD=40
67 ALIVE=52
68