A large commit.
[pdp8.git] / sw / src / life / LIFE10.BAK
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