Commit | Line | Data |
---|---|---|
81e70d48 PH |
1 | / LIVING PDP8 |
2 | ||
3 | / CONWAY'S GAME OF LIFE | |
4 | ||
5 | ||
6 | /--------------------------------------------------------------------- | |
7 | / CONFIGURATION PARAMETERS | |
8 | ||
9 | ||
10 | / SIZE OF THE PLAYING FIELD | |
11 | / MAX COLUMNS=64(DEC)=100(OCT) | |
12 | / MAX ROWS==64(DEC)=100(OCT) | |
13 | ROWS=10 | |
14 | COLS=10 | |
15 | ||
16 | / HAS THE FIELD LIMITS OR IS IT ENDLESS? | |
17 | ||
18 | LIMITS=1 | |
19 | ||
20 | / BORDER BEHAVIOUR FOR LIMITED FIELD | |
21 | / 0 - OFF FIELD POSITIONS ARE ASSUMED TO BE ALWAYS DEAD | |
22 | / 1 - OFF FIELD POSITIONS ARE ASSUMED TO BE ALWAYS ALIFE | |
23 | ||
24 | BORDER=0 | |
25 | ||
26 | /--------------------------------------------------------------------- | |
27 | / TEST PROGRAM | |
28 | *200 | |
29 | TAD DD | |
30 | JMS XCALC | |
31 | HLT | |
32 | DD, 30 | |
33 | ||
34 | /--------------------------------------------------------------------- | |
35 | / DATA HOLDING AND ACCESS | |
36 | ||
37 | / DATA IS HELD IN AN ARRAY OF WORDS, ASSIGNING ONE BIT PER POSITION. | |
38 | / POSITION ADDRESS IS PASSED IN AC WHILE CALLING ACCESS ROUTINES. | |
39 | ||
40 | PAGE / START ON NEW PAGE | |
41 | ||
42 | GET, 0 / GET POSITION'S VALUE | |
43 | DCA ADR / SAVE ADDRESS | |
44 | JMS LIMIT / TEST LIMIT | |
45 | JMP I GET / ERROR RETURN, RETURN WITH LIMIT VALUE IN AC | |
46 | JMS POSCAL / CALC WORD ADDRESS AND BIT POSITION | |
47 | ||
48 | ||
49 | SET, 0 / SET POSITION'S VALUE TO 1 | |
50 | CLEAR, 0 / CLEAR POSITION'S VALUE TO 0 | |
51 | ||
52 | LIMIT, 0 | |
53 | TAD ADR | |
54 | BSW / NOW ROW ADDRESS IN LOWER BITS | |
55 | AND K77 / MASK OUT UPPER BITS | |
56 | TAD KNMROW | |
57 | SMA | |
58 | JMP LGD1 / ONE LIMIT GOOD | |
59 | CLA | |
60 | TAD BORDER / BORDER STANDARD RETURN VALUE | |
61 | JMP I LIMIT / ERROR RETURN | |
62 | LGD1, CLA CLL | |
63 | TAD ADR | |
64 | AND K77 | |
65 | TAD KNMCO | |
66 | SMA | |
67 | JMP LGD2 | |
68 | CLA CLL | |
69 | TAD BORDER | |
70 | JMP I LIMIT / ERROR RETURN | |
71 | LGD2, ISZ LIMIT / PREPARE GOOD RETURN | |
72 | JMP I LIMIT / GOOD RETURN | |
73 | ||
74 | ADR, 0 / TEMPORARY ADDRESS STORAGE | |
75 | K77, 77 | |
76 | KNMCO, 1-COLS | |
77 | KNMROW, 1-ROWS | |
78 | ||
79 | /--------------------------------------------------------------------- | |
80 | / CALCULATE BIT POSITION FOR X VALUE. | |
81 | / RESULTS IN FOLLOWING LOCATIONS: | |
82 | / XW: WORD ADDRESS OF DESIRED POSITION | |
83 | / XB: BIT ADDRESS OF DESIRED POSITION | |
84 | ||
85 | / POSITION IN AC, HIGHEST SUPPORTED NUMBER IS 95! | |
86 | ||
87 | POSCAL, 0 | |
88 | DCA XBIT | |
89 | DCA XWORD | |
90 | ||
91 | TAD KN48 | |
92 | JMS MTEST | |
93 | ||
94 | TAD KN24 | |
95 | JMS MTEST | |
96 | HLT | |
97 | TAD KN12 | |
98 | JMS MTEST | |
99 | ||
100 | TAD XWORD / SHIFT BACK RESULT | |
101 | RAR | |
102 | DCA XWORD | |
103 | ||
104 | JMP I POSCAL / RETURN TO CALLER | |
105 | ||
106 | MTEST, 0 | |
107 | TAD XBIT | |
108 | SMA | |
109 | SKP | |
110 | JMP IGN12 | |
111 | DCA XBIT | |
112 | ISZ XWORD | |
113 | IGN12, CLA CLL | |
114 | TAD XWORD | |
115 | RAL | |
116 | DCA XWORD | |
117 | JMP I MTEST | |
118 | ||
119 | KN48, -60 | |
120 | KN24, -30 | |
121 | KN12, -14 | |
122 | ||
123 | *1000 | |
124 | XWORD, 0 / INTEGER DIVISION RESULT | |
125 | XBIT, 0 / INTIGER DIVISION'S REST | |
126 | ||
127 | /--------------------------------------------------------------------- | |
128 | / THIS IS IT, FOLKS! | |
129 | $ | |
130 | ||
131 |