11
2 8080 MACRO ASSEMBLER, VER 3.0        ERRORS = 0
3+                                                      20:29  05/07/2017
4+                                                                                      PAGE 1
5
6
7
8                   ; LIFE .... VERSION 2.0
9                   ; WRITTEN BY ED HALL
10                   ; ASSEMBLED BY GORDEN FRENCH
11                   ; AND RDM
12                   ;
13                   ; RETYPED FROM MANUAL APRIL 2015, UDO MUNK
14                   ; THIS VERSION MODIFIED FOR ALTAIR 88SIO-2
15                   ;
16                   ;
17                   ; CNTL-A IS USED TO DEPOSIT A CELL OF LIFE ON THE SCREEN.
18                   ; CNTL-N, O, I AND H STEP THE CURSOR UP, DOWN, RIGHT, AND
19                   ; LEFT RESPECTIVELY. CNTL-B CAN BE USED TO ERASE THE SCREEN.
20                   ; ONCE THE INITIAL COLONY IS COMPLETE, CNTL-D IS USED TO
21                   ; START THE EVOLUTION OF THE CELLS. DURING THE COLORFUL
22                   ; EVOLUTION OF THE CELLS THE LETTER F ON YOUR KEYBOARD
23                   ; CAN BE USED TO FREEZE THE PICTURE. HIT THE LETTER G TO
24                   ; GO AND THE LETTER S TO STOP.
25
26   0009            RED     EQU  9
27   000A            GREEN   EQU  10
28   000C            BLUE    EQU  12
29   0800            STACK   EQU  800H
30   0800            DISPLY  EQU  800H
31   D800            TIME    EQU  0D800H
32                   ;DAV     EQU  32                 ; FOR ALTAIR 88SIO REV 0
33                   ;TBE     EQU  2
34   0001            DAV     EQU  1                  ; FOR ALTAIR 88SIO-2
35   0002            TBE     EQU  2
36   0000            DELAY   EQU  0
37
38   0000   C30300           JMP  START
39   0003   310008   START:  LXI  SP,STACK
40   0006   CD6A01           CALL INIT
41   0009   CD8F01   MAN20:  CALL SETUP
42   000C   CD2D00   MAN30:  CALL GEN
43   000F   DB11     FRZE:   IN   17
44   0011   FE46             CPI  'F'
45   0013   CA0F00           JZ   FRZE
46   0016   CD4200           CALL CHANGE
47   0019   DB11     STP:    IN   17
48   001B   FE53             CPI  'S'
49   001D   CA0900           JZ   MAN20
50   0020   DBFF     MAN40:  IN   255
51   0022   17               RAL
52   0023   DA2000           JC   MAN40
53   0026   17               RAL
54   0027   DA0900           JC   MAN20
55   002A   C30C00           JMP  MAN30
56   002D   010000   GEN:    LXI  B,0
57   0030   CD8400   GEN20:  CALL UPDATE
58   0033   3E40             MVI  A,64
591
60 8080 MACRO ASSEMBLER, VER 3.0        ERRORS = 0
61+                                                      20:29  05/07/2017
62+                                                                                      PAGE 2
63
64
65
66   0035   0C               INR  C
67   0036   B9               CMP  C
68   0037   C23000           JNZ  GEN20
69   003A   0E00             MVI  C,0
70   003C   04               INR  B
71   003D   B8               CMP  B
72   003E   C23000           JNZ  GEN20
73   0041   C9               RET
74   0042   010000   CHANGE: LXI  B,0
75   0045   CDE900   CHN15:  CALL GTCOL
76   0048   FE09             CPI  RED
77   004A   C25500           JNZ  CHN20
78   004D   3E00             MVI  A,0
79   004F   CDFA00           CALL PTCOL
80   0052   C35F00           JMP  CHN30
81   0055   FE0A     CHN20:  CPI  GREEN
82   0057   C25F00           JNZ  CHN30
83   005A   3E0C             MVI  A,BLUE
84   005C   CDFA00           CALL PTCOL
85   005F   3E40     CHN30:  MVI  A,64
86   0061   0C               INR  C
87   0062   B9               CMP  C
88   0063   C24500           JNZ  CHN15
89   0066   0E00             MVI  C,0
90   0068   04               INR  B
91   0069   B8               CMP  B
92   006A   C24500           JNZ  CHN15
93   006D   C9               RET
94   006E   210008   CDISP:  LXI  H,DISPLY
95   0071   1100F8           LXI  D,-2048
96   0074   0600     CLEAR:  MVI  B,0
97   0076   3E00     FILL:   MVI  A,0
98   0078   BA       FLL12:  CMP  D
99   0079   C27E00           JNZ  FLL20
100   007C   BB               CMP  E
101   007D   C8               RZ
102   007E   70       FLL20:  MOV  M,B
103   007F   13               INX  D
104   0080   23               INX  H
105   0081   C37800           JMP  FLL12
106   0084   C5       UPDATE: PUSH B
107   0085   3E00             MVI  A,0
108   0087   B9               CMP  C
109   0088   C29C00           JNZ  UPD10
110   008B   0D               DCR  C
111   008C   CDCC00           CALL UPROW
112   008F   322A02           STA  ROWA
113   0092   C1               POP  B
114   0093   C5               PUSH B
115   0094   CDCC00           CALL UPROW
116   0097   322C02           STA  ROWB
1171
118 8080 MACRO ASSEMBLER, VER 3.0        ERRORS = 0
119+                                                      20:29  05/07/2017
120+                                                                                      PAGE 3
121
122
123
124   009A   C1               POP  B
125   009B   C5               PUSH B
126   009C   0C       UPD10:  INR  C
127   009D   CDCC00           CALL UPROW
128   00A0   212C02           LXI  H,ROWB
129   00A3   46               MOV  B,M
130   00A4   77               MOV  M,A
131   00A5   80               ADD  B
132   00A6   2B               DCX  H
133   00A7   4E               MOV  C,M
134   00A8   70               MOV  M,B
135   00A9   81               ADD  C
136   00AA   57               MOV  D,A
137   00AB   C1               POP  B
138   00AC   C8               RZ
139   00AD   D5               PUSH D
140   00AE   CDE900           CALL GTCOL
141   00B1   D1               POP  D
142   00B2   FE00             CPI  0
143   00B4   CAC300           JZ   UPD20
144   00B7   7A               MOV  A,D
145   00B8   FE03             CPI  3
146   00BA   C8               RZ
147   00BB   FE04             CPI  4
148   00BD   C8               RZ
149   00BE   3E09             MVI  A,RED
150   00C0   C3FA00           JMP  PTCOL
151   00C3   7A       UPD20:  MOV  A,D
152   00C4   FE03             CPI  3
153   00C6   C0               RNZ
154   00C7   3E0A             MVI  A,GREEN
155   00C9   C3FA00           JMP  PTCOL
156   00CC   05       UPROW:  DCR  B
157   00CD   1600             MVI  D,0
158   00CF   CDDC00           CALL UPONE
159   00D2   04               INR  B
160   00D3   CDDC00           CALL UPONE
161   00D6   04               INR  B
162   00D7   CDDC00           CALL UPONE
163   00DA   7A               MOV  A,D
164   00DB   C9               RET
165   00DC   D5       UPONE:  PUSH D
166   00DD   CDE900           CALL GTCOL
167   00E0   D1               POP  D
168   00E1   FE00             CPI  0
169   00E3   C8               RZ
170   00E4   FE0A             CPI  10
171   00E6   C8               RZ
172   00E7   14               INR  D
173   00E8   C9               RET
174   00E9   CD1601   GTCOL:  CALL FNDCOL
1751
176 8080 MACRO ASSEMBLER, VER 3.0        ERRORS = 0
177+                                                      20:29  05/07/2017
178+                                                                                      PAGE 4
179
180
181
182   00EC   7E               MOV  A,M
183   00ED   DAF300           JC   GT20
184   00F0   E60F             ANI  15
185   00F2   C9               RET
186   00F3   E6F0     GT20:   ANI  240
187   00F5   07               RLC
188   00F6   07               RLC
189   00F7   07               RLC
190   00F8   07               RLC
191   00F9   C9               RET
192   00FA   E60F     PTCOL:  ANI  15
193   00FC   F5               DB   0F5H
194   00FD   CD1601           CALL FNDCOL
195   0100   D1               POP  D
196   0101   DA0A01           JC   PTC20
197   0104   7E               MOV  A,M
198   0105   E6F0             ANI  240
199   0107   82               ADD  D
200   0108   77               MOV  M,A
201   0109   C9               RET
202   010A   7A       PTC20:  MOV  A,D
203   010B   07               RLC
204   010C   07               RLC
205   010D   07               RLC
206   010E   07               RLC
207   010F   57               MOV  D,A
208   0110   7E               MOV  A,M
209   0111   E60F             ANI  15
210   0113   82               ADD  D
211   0114   77               MOV  M,A
212   0115   C9               RET
213   0116   210008   FNDCOL: LXI  H,DISPLY
214   0119   78               MOV  A,B
215   011A   E620             ANI  32
216   011C   CA2301           JZ   FND20
217   011F   110002           LXI  D,512
218   0122   19               DAD  D
219   0123   79       FND20:  MOV  A,C
220   0124   E620             ANI  32
221   0126   CA2D01           JZ   FND30
222   0129   110004           LXI  D,1024
223   012C   19               DAD  D
224   012D   79       FND30:  MOV  A,C
225   012E   E61F             ANI  31
226   0130   07               RLC
227   0131   07               RLC
228   0132   07               RLC
229   0133   17               RAL
230   0134   5F               MOV  E,A
231   0135   3E00             MVI  A,0
232   0137   17               RAL
2331
234 8080 MACRO ASSEMBLER, VER 3.0        ERRORS = 0
235+                                                      20:29  05/07/2017
236+                                                                                      PAGE 5
237
238
239
240   0138   57               MOV  D,A
241   0139   19               DAD  D
242   013A   78               MOV  A,B
243   013B   1F               RAR
244   013C   F5               DB   0F5H
245   013D   E60F             ANI  15
246   013F   5F               MOV  E,A
247   0140   1600             MVI  D,0
248   0142   19               DAD  D
249   0143   F1               DB   0F1H
250   0144   C9               RET
251   0145   DB10     CHECK:  IN   16
252   0147   E601             ANI  DAV
253   0149   C0               RNZ
254   014A   0C               INR  C
255   014B   C24501           JNZ  CHECK
256   014E   04               INR  B
257   014F   C24501           JNZ  CHECK
258   0152   C9               RET
259   0153   DB10     TTYONE: IN   16
260   0155   E602             ANI  TBE
261   0157   CA5301           JZ   TTYONE
262   015A   78               MOV  A,B
263   015B   D311             OUT  17
264   015D   C9               RET
265   015E   46       TTYOUT: MOV  B,M
266   015F   3E00             MVI  A,0
267   0161   B8               CMP  B
268   0162   C8               RZ
269   0163   CD5301           CALL TTYONE
270   0166   23               INX  H
271   0167   C35E01           JMP  TTYOUT
272   016A   CD6E00   INIT:   CALL CDISP
273   016D   3E84             MVI  A,132
274   016F   D30E             OUT  14
275   0171   3EB0             MVI  A,176
276   0173   D30F             OUT  15
277   0175   212E02           LXI  H,IDENT
278   0178   CD5E01           CALL TTYOUT
279   017B   CD4501   INT20:  CALL CHECK
280                   ;       JZ   INT20               ; INSERT JZ INT20 HERE FOR INST
281   017E   DB11             IN   17
282   0180   47               MOV  B,A
283   0181   CD5301           CALL TTYONE
284   0184   E67F             ANI  127
285   0186   FE59             CPI  89
286   0188   C9               RET                     ; INSERT RZ HERE FOR INST
287   0189   214802           LXI  H,INST
288   018C   CD5E01           CALL TTYOUT
289   018F   214A02   SETUP:  LXI  H,ENTER
290   0192   CD5E01           CALL TTYOUT
2911
292 8080 MACRO ASSEMBLER, VER 3.0        ERRORS = 0
293+                                                      20:29  05/07/2017
294+                                                                                      PAGE 6
295
296
297
298   0195   CD6E00           CALL CDISP
299   0198   010000           LXI  B,0
300   019B   CDF901   STP20:  CALL GTCHR
301   019E   21C001           LXI  H,TAB
302   01A1   E67F             ANI  7FH
303   01A3   57               MOV  D,A
304   01A4   97       STP30:  SUB  A
305   01A5   BE               CMP  M
306   01A6   CA9B01           JZ   STP20
307   01A9   7A               MOV  A,D
308   01AA   BE               CMP  M
309   01AB   CAB401           JZ   STP40
310   01AE   23               INX  H
311   01AF   23               INX  H
312   01B0   23               INX  H
313   01B1   C3A401           JMP  STP30
314   01B4   23       STP40:  INX  H
315   01B5   5E               MOV  E,M
316   01B6   23               INX  H
317   01B7   56               MOV  D,M
318   01B8   EB               XCHG
319   01B9   CDBF01           CALL INDEX
320   01BC   C39B01           JMP  STP20
321   01BF   E9       INDEX:  PCHL
322   01C0   01       TAB:    DB   1
323   01C1   E901             DW   ON
324   01C3   02               DB   2
325   01C4   F001             DW   OFF
326   01C6   04               DB   4
327   01C7   DF01             DW   THRU
328   01C9   08               DB   8
329   01CA   F701             DW   BACK
330   01CC   09               DB   9
331   01CD   EE01             DW   FWD
332   01CF   0F               DB   15
333   01D0   E701             DW   DOWN
334   01D2   0B               DB   11
335   01D3   E101             DW   HOME
336   01D5   0D               DB   13
337   01D6   E501             DW   RETURN
338   01D8   0E               DB   14
339   01D9   F501             DW   UP
340   01DB   00               DB   0
341   01DC   00               DB   0
342   01DD   00               DB   0
343   01DE   00               DB   0
344   01DF   C1       THRU:   POP  B
345   01E0   C9               RET
346   01E1   010000   HOME:   LXI  B,0
347   01E4   C9               RET
348   01E5   0600     RETURN: MVI  B,0
3491
350 8080 MACRO ASSEMBLER, VER 3.0        ERRORS = 0
351+                                                      20:29  05/07/2017
352+                                                                                      PAGE 7
353
354
355
356   01E7   0C       DOWN:   INR  C
357   01E8   C9               RET
358   01E9   3E0F     ON:     MVI  A,15
359   01EB   CDFA00   BOTH:   CALL PTCOL
360   01EE   04       FWD:    INR  B
361   01EF   C9               RET
362   01F0   3E00     OFF:    MVI  A,0
363   01F2   C3EB01           JMP  BOTH
364   01F5   0D       UP:     DCR  C
365   01F6   C9               RET
366   01F7   05       BACK:   DCR  B
367   01F8   C9               RET
368   01F9   CDE900   GTCHR:  CALL GTCOL
369   01FC   F5               DB   0F5H
370   01FD   C5       GTC20:  PUSH B
371   01FE   3E0C             MVI  A,12
372   0200   CDFA00           CALL PTCOL
373   0203   010000           LXI  B,DELAY
374   0206   CD4501           CALL CHECK
375   0209   C22602           JNZ  GTC40
376   020C   C1               POP  B
377   020D   C5               PUSH B
378   020E   3E00             MVI  A,0
379   0210   CDFA00           CALL PTCOL
380   0213   010000           LXI  B,DELAY
381   0216   CD4501           CALL CHECK
382   0219   C1               POP  B
383   021A   CAFD01           JZ   GTC20
384   021D   F1       GTC30:  POP  6
385   021E   CDFA00           CALL PTCOL
386   0221   DB11             IN   17
387   0223   D311             OUT  17
388   0225   C9               RET
389   0226   C1       GTC40:  POP  B
390   0227   C31D02           JMP  GTC30
391   022A   0000     ROWA:   DW   0
392   022C   0000     ROWB:   DW   0
393   022E   4C49     IDENT:  DW   'IL'
394   0230   4645             DW   'EF'
395   0232   2E2E             DW   '..'
396   0234   2E2E             DW   '..'
397   0236   5645             DW   'EV'
398   0238   5253             DW   'SR'
399   023A   494F             DW   'OI'
400   023C   4E20             DW   ' N'
401   023E   322E             DW   '.2'
402   0240   3020             DW   ' 0'
403   0242   0D0A             DW   0A0DH
404   0244   0A0A             DW   0A0AH
405   0246   0000             DW   0
406   0248   0000     INST:   DW   0
4071
408 8080 MACRO ASSEMBLER, VER 3.0        ERRORS = 0
409+                                                      20:29  05/07/2017
410+                                                                                      PAGE 8
411
412
413
414   024A   454E     ENTER:  DW   'NE'
415   024C   5445             DW   'ET'
416   024E   5220             DW   ' R'
417   0250   4441             DW   'AD'
418   0252   5441             DW   'AT'
419   0254   0D0A             DW   0A0DH
420   0256   0000             DW   0
421
422                           END
423 NO PROGRAM ERRORS
4241
425 8080 MACRO ASSEMBLER, VER 3.0        ERRORS = 0
426+                                                      20:29  05/07/2017
427+                                                                                      PAGE 9
428
429
430
431                        SYMBOL TABLE
432
433  * 01
434
435  A      0007      B      0000      BACK   01F7      BLUE   000C
436  BOTH   01EB      C      0001      CDISP  006E      CHANG  0042
437  CHECK  0145      CHN15  0045      CHN20  0055      CHN30  005F
438  CLEAR  0074 *    D      0002      DAV    0001      DELAY  0000
439  DISPL  0800      DOWN   01E7      E      0003      ENTER  024A
440  FILL   0076 *    FLL12  0078      FLL20  007E      FND20  0123
441  FND30  012D      FNDCO  0116      FRZE   000F      FWD    01EE
442  GEN    002D      GEN20  0030      GREEN  000A      GT20   00F3
443  GTC20  01FD      GTC30  021D      GTC40  0226      GTCHR  01F9
444  GTCOL  00E9      H      0004      HOME   01E1      IDENT  022E
445  INDEX  01BF      INIT   016A      INST   0248      INT20  017B *
446  L      0005      M      0006      MAN20  0009      MAN30  000C
447  MAN40  0020      OFF    01F0      ON     01E9      PSW    0006
448  PTC20  010A      PTCOL  00FA      RED    0009      RETUR  01E5
449  ROWA   022A      ROWB   022C      SETUP  018F      SP     0006
450  STACK  0800      START  0003      STP    0019 *    STP20  019B
451  STP30  01A4      STP40  01B4      TAB    01C0      TBE    0002
452  THRU   01DF      TIME   D800 *    TTYON  0153      TTYOU  015E
453  UP     01F5      UPD10  009C      UPD20  00C3      UPDAT  0084
454  UPONE  00DC      UPROW  00CC
455
456