1
 8080 MACRO ASSEMBLER, VER 3.0        ERRORS = 0      
+                                                      20:29  05/07/2017
+                                                                                      PAGE 1
      


                   ; LIFE .... VERSION 2.0
                   ; WRITTEN BY ED HALL
                   ; ASSEMBLED BY GORDEN FRENCH
                   ; AND RDM
                   ;
                   ; RETYPED FROM MANUAL APRIL 2015, UDO MUNK
                   ; THIS VERSION MODIFIED FOR ALTAIR 88SIO-2
                   ;
                   ;
                   ; CNTL-A IS USED TO DEPOSIT A CELL OF LIFE ON THE SCREEN.
                   ; CNTL-N, O, I AND H STEP THE CURSOR UP, DOWN, RIGHT, AND
                   ; LEFT RESPECTIVELY. CNTL-B CAN BE USED TO ERASE THE SCREEN.
                   ; ONCE THE INITIAL COLONY IS COMPLETE, CNTL-D IS USED TO
                   ; START THE EVOLUTION OF THE CELLS. DURING THE COLORFUL
                   ; EVOLUTION OF THE CELLS THE LETTER F ON YOUR KEYBOARD
                   ; CAN BE USED TO FREEZE THE PICTURE. HIT THE LETTER G TO
                   ; GO AND THE LETTER S TO STOP.
                    
   0009            RED     EQU  9
   000A            GREEN   EQU  10
   000C            BLUE    EQU  12
   0800            STACK   EQU  800H
   0800            DISPLY  EQU  800H
   D800            TIME    EQU  0D800H
                   ;DAV     EQU  32                 ; FOR ALTAIR 88SIO REV 0
                   ;TBE     EQU  2
   0001            DAV     EQU  1                  ; FOR ALTAIR 88SIO-2
   0002            TBE     EQU  2
   0000            DELAY   EQU  0
                    
   0000   C30300           JMP  START
   0003   310008   START:  LXI  SP,STACK
   0006   CD6A01           CALL INIT
   0009   CD8F01   MAN20:  CALL SETUP
   000C   CD2D00   MAN30:  CALL GEN
   000F   DB11     FRZE:   IN   17
   0011   FE46             CPI  'F'
   0013   CA0F00           JZ   FRZE
   0016   CD4200           CALL CHANGE
   0019   DB11     STP:    IN   17
   001B   FE53             CPI  'S'
   001D   CA0900           JZ   MAN20
   0020   DBFF     MAN40:  IN   255
   0022   17               RAL
   0023   DA2000           JC   MAN40
   0026   17               RAL
   0027   DA0900           JC   MAN20
   002A   C30C00           JMP  MAN30
   002D   010000   GEN:    LXI  B,0
   0030   CD8400   GEN20:  CALL UPDATE
   0033   3E40             MVI  A,64
1
 8080 MACRO ASSEMBLER, VER 3.0        ERRORS = 0      
+                                                      20:29  05/07/2017
+                                                                                      PAGE 2
      


   0035   0C               INR  C
   0036   B9               CMP  C
   0037   C23000           JNZ  GEN20
   003A   0E00             MVI  C,0
   003C   04               INR  B
   003D   B8               CMP  B
   003E   C23000           JNZ  GEN20
   0041   C9               RET
   0042   010000   CHANGE: LXI  B,0
   0045   CDE900   CHN15:  CALL GTCOL
   0048   FE09             CPI  RED
   004A   C25500           JNZ  CHN20
   004D   3E00             MVI  A,0
   004F   CDFA00           CALL PTCOL
   0052   C35F00           JMP  CHN30
   0055   FE0A     CHN20:  CPI  GREEN
   0057   C25F00           JNZ  CHN30
   005A   3E0C             MVI  A,BLUE
   005C   CDFA00           CALL PTCOL
   005F   3E40     CHN30:  MVI  A,64
   0061   0C               INR  C
   0062   B9               CMP  C
   0063   C24500           JNZ  CHN15
   0066   0E00             MVI  C,0
   0068   04               INR  B
   0069   B8               CMP  B
   006A   C24500           JNZ  CHN15
   006D   C9               RET
   006E   210008   CDISP:  LXI  H,DISPLY
   0071   1100F8           LXI  D,-2048
   0074   0600     CLEAR:  MVI  B,0
   0076   3E00     FILL:   MVI  A,0
   0078   BA       FLL12:  CMP  D
   0079   C27E00           JNZ  FLL20
   007C   BB               CMP  E
   007D   C8               RZ
   007E   70       FLL20:  MOV  M,B
   007F   13               INX  D
   0080   23               INX  H
   0081   C37800           JMP  FLL12
   0084   C5       UPDATE: PUSH B
   0085   3E00             MVI  A,0
   0087   B9               CMP  C
   0088   C29C00           JNZ  UPD10
   008B   0D               DCR  C
   008C   CDCC00           CALL UPROW
   008F   322A02           STA  ROWA
   0092   C1               POP  B
   0093   C5               PUSH B
   0094   CDCC00           CALL UPROW
   0097   322C02           STA  ROWB
1
 8080 MACRO ASSEMBLER, VER 3.0        ERRORS = 0      
+                                                      20:29  05/07/2017
+                                                                                      PAGE 3
      


   009A   C1               POP  B
   009B   C5               PUSH B
   009C   0C       UPD10:  INR  C
   009D   CDCC00           CALL UPROW
   00A0   212C02           LXI  H,ROWB
   00A3   46               MOV  B,M
   00A4   77               MOV  M,A
   00A5   80               ADD  B
   00A6   2B               DCX  H
   00A7   4E               MOV  C,M
   00A8   70               MOV  M,B
   00A9   81               ADD  C
   00AA   57               MOV  D,A
   00AB   C1               POP  B
   00AC   C8               RZ
   00AD   D5               PUSH D
   00AE   CDE900           CALL GTCOL
   00B1   D1               POP  D
   00B2   FE00             CPI  0
   00B4   CAC300           JZ   UPD20
   00B7   7A               MOV  A,D
   00B8   FE03             CPI  3
   00BA   C8               RZ
   00BB   FE04             CPI  4
   00BD   C8               RZ
   00BE   3E09             MVI  A,RED
   00C0   C3FA00           JMP  PTCOL
   00C3   7A       UPD20:  MOV  A,D
   00C4   FE03             CPI  3
   00C6   C0               RNZ
   00C7   3E0A             MVI  A,GREEN
   00C9   C3FA00           JMP  PTCOL
   00CC   05       UPROW:  DCR  B
   00CD   1600             MVI  D,0
   00CF   CDDC00           CALL UPONE
   00D2   04               INR  B
   00D3   CDDC00           CALL UPONE
   00D6   04               INR  B
   00D7   CDDC00           CALL UPONE
   00DA   7A               MOV  A,D
   00DB   C9               RET
   00DC   D5       UPONE:  PUSH D
   00DD   CDE900           CALL GTCOL
   00E0   D1               POP  D
   00E1   FE00             CPI  0
   00E3   C8               RZ
   00E4   FE0A             CPI  10
   00E6   C8               RZ
   00E7   14               INR  D
   00E8   C9               RET
   00E9   CD1601   GTCOL:  CALL FNDCOL
1
 8080 MACRO ASSEMBLER, VER 3.0        ERRORS = 0      
+                                                      20:29  05/07/2017
+                                                                                      PAGE 4
      


   00EC   7E               MOV  A,M
   00ED   DAF300           JC   GT20
   00F0   E60F             ANI  15
   00F2   C9               RET
   00F3   E6F0     GT20:   ANI  240
   00F5   07               RLC
   00F6   07               RLC
   00F7   07               RLC
   00F8   07               RLC
   00F9   C9               RET
   00FA   E60F     PTCOL:  ANI  15
   00FC   F5               DB   0F5H
   00FD   CD1601           CALL FNDCOL
   0100   D1               POP  D
   0101   DA0A01           JC   PTC20
   0104   7E               MOV  A,M
   0105   E6F0             ANI  240
   0107   82               ADD  D
   0108   77               MOV  M,A
   0109   C9               RET
   010A   7A       PTC20:  MOV  A,D
   010B   07               RLC
   010C   07               RLC
   010D   07               RLC
   010E   07               RLC
   010F   57               MOV  D,A
   0110   7E               MOV  A,M
   0111   E60F             ANI  15
   0113   82               ADD  D
   0114   77               MOV  M,A
   0115   C9               RET
   0116   210008   FNDCOL: LXI  H,DISPLY
   0119   78               MOV  A,B
   011A   E620             ANI  32
   011C   CA2301           JZ   FND20
   011F   110002           LXI  D,512
   0122   19               DAD  D
   0123   79       FND20:  MOV  A,C
   0124   E620             ANI  32
   0126   CA2D01           JZ   FND30
   0129   110004           LXI  D,1024
   012C   19               DAD  D
   012D   79       FND30:  MOV  A,C
   012E   E61F             ANI  31
   0130   07               RLC
   0131   07               RLC
   0132   07               RLC
   0133   17               RAL
   0134   5F               MOV  E,A
   0135   3E00             MVI  A,0
   0137   17               RAL
1
 8080 MACRO ASSEMBLER, VER 3.0        ERRORS = 0      
+                                                      20:29  05/07/2017
+                                                                                      PAGE 5
      


   0138   57               MOV  D,A
   0139   19               DAD  D
   013A   78               MOV  A,B
   013B   1F               RAR
   013C   F5               DB   0F5H
   013D   E60F             ANI  15
   013F   5F               MOV  E,A
   0140   1600             MVI  D,0
   0142   19               DAD  D
   0143   F1               DB   0F1H
   0144   C9               RET
   0145   DB10     CHECK:  IN   16
   0147   E601             ANI  DAV
   0149   C0               RNZ
   014A   0C               INR  C
   014B   C24501           JNZ  CHECK
   014E   04               INR  B
   014F   C24501           JNZ  CHECK
   0152   C9               RET
   0153   DB10     TTYONE: IN   16
   0155   E602             ANI  TBE
   0157   CA5301           JZ   TTYONE
   015A   78               MOV  A,B
   015B   D311             OUT  17
   015D   C9               RET
   015E   46       TTYOUT: MOV  B,M
   015F   3E00             MVI  A,0
   0161   B8               CMP  B
   0162   C8               RZ
   0163   CD5301           CALL TTYONE
   0166   23               INX  H
   0167   C35E01           JMP  TTYOUT
   016A   CD6E00   INIT:   CALL CDISP
   016D   3E84             MVI  A,132
   016F   D30E             OUT  14
   0171   3EB0             MVI  A,176
   0173   D30F             OUT  15
   0175   212E02           LXI  H,IDENT
   0178   CD5E01           CALL TTYOUT
   017B   CD4501   INT20:  CALL CHECK
                   ;       JZ   INT20               ; INSERT JZ INT20 HERE FOR INST
   017E   DB11             IN   17
   0180   47               MOV  B,A
   0181   CD5301           CALL TTYONE
   0184   E67F             ANI  127
   0186   FE59             CPI  89
   0188   C9               RET                     ; INSERT RZ HERE FOR INST
   0189   214802           LXI  H,INST
   018C   CD5E01           CALL TTYOUT
   018F   214A02   SETUP:  LXI  H,ENTER
   0192   CD5E01           CALL TTYOUT
1
 8080 MACRO ASSEMBLER, VER 3.0        ERRORS = 0      
+                                                      20:29  05/07/2017
+                                                                                      PAGE 6
      


   0195   CD6E00           CALL CDISP
   0198   010000           LXI  B,0
   019B   CDF901   STP20:  CALL GTCHR
   019E   21C001           LXI  H,TAB
   01A1   E67F             ANI  7FH
   01A3   57               MOV  D,A
   01A4   97       STP30:  SUB  A
   01A5   BE               CMP  M
   01A6   CA9B01           JZ   STP20
   01A9   7A               MOV  A,D
   01AA   BE               CMP  M
   01AB   CAB401           JZ   STP40
   01AE   23               INX  H
   01AF   23               INX  H
   01B0   23               INX  H
   01B1   C3A401           JMP  STP30
   01B4   23       STP40:  INX  H
   01B5   5E               MOV  E,M
   01B6   23               INX  H
   01B7   56               MOV  D,M
   01B8   EB               XCHG
   01B9   CDBF01           CALL INDEX
   01BC   C39B01           JMP  STP20
   01BF   E9       INDEX:  PCHL
   01C0   01       TAB:    DB   1
   01C1   E901             DW   ON
   01C3   02               DB   2
   01C4   F001             DW   OFF
   01C6   04               DB   4
   01C7   DF01             DW   THRU
   01C9   08               DB   8
   01CA   F701             DW   BACK
   01CC   09               DB   9
   01CD   EE01             DW   FWD
   01CF   0F               DB   15
   01D0   E701             DW   DOWN
   01D2   0B               DB   11
   01D3   E101             DW   HOME
   01D5   0D               DB   13
   01D6   E501             DW   RETURN
   01D8   0E               DB   14
   01D9   F501             DW   UP
   01DB   00               DB   0
   01DC   00               DB   0
   01DD   00               DB   0
   01DE   00               DB   0
   01DF   C1       THRU:   POP  B
   01E0   C9               RET
   01E1   010000   HOME:   LXI  B,0
   01E4   C9               RET
   01E5   0600     RETURN: MVI  B,0
1
 8080 MACRO ASSEMBLER, VER 3.0        ERRORS = 0      
+                                                      20:29  05/07/2017
+                                                                                      PAGE 7
      


   01E7   0C       DOWN:   INR  C
   01E8   C9               RET
   01E9   3E0F     ON:     MVI  A,15
   01EB   CDFA00   BOTH:   CALL PTCOL
   01EE   04       FWD:    INR  B
   01EF   C9               RET
   01F0   3E00     OFF:    MVI  A,0
   01F2   C3EB01           JMP  BOTH
   01F5   0D       UP:     DCR  C
   01F6   C9               RET
   01F7   05       BACK:   DCR  B
   01F8   C9               RET
   01F9   CDE900   GTCHR:  CALL GTCOL
   01FC   F5               DB   0F5H
   01FD   C5       GTC20:  PUSH B
   01FE   3E0C             MVI  A,12
   0200   CDFA00           CALL PTCOL
   0203   010000           LXI  B,DELAY
   0206   CD4501           CALL CHECK
   0209   C22602           JNZ  GTC40
   020C   C1               POP  B
   020D   C5               PUSH B
   020E   3E00             MVI  A,0
   0210   CDFA00           CALL PTCOL
   0213   010000           LXI  B,DELAY
   0216   CD4501           CALL CHECK
   0219   C1               POP  B
   021A   CAFD01           JZ   GTC20
   021D   F1       GTC30:  POP  6
   021E   CDFA00           CALL PTCOL
   0221   DB11             IN   17
   0223   D311             OUT  17
   0225   C9               RET
   0226   C1       GTC40:  POP  B
   0227   C31D02           JMP  GTC30
   022A   0000     ROWA:   DW   0
   022C   0000     ROWB:   DW   0
   022E   4C49     IDENT:  DW   'IL'
   0230   4645             DW   'EF'
   0232   2E2E             DW   '..'
   0234   2E2E             DW   '..'
   0236   5645             DW   'EV'
   0238   5253             DW   'SR'
   023A   494F             DW   'OI'
   023C   4E20             DW   ' N'
   023E   322E             DW   '.2'
   0240   3020             DW   ' 0'
   0242   0D0A             DW   0A0DH
   0244   0A0A             DW   0A0AH
   0246   0000             DW   0
   0248   0000     INST:   DW   0
1
 8080 MACRO ASSEMBLER, VER 3.0        ERRORS = 0      
+                                                      20:29  05/07/2017
+                                                                                      PAGE 8
      


   024A   454E     ENTER:  DW   'NE'
   024C   5445             DW   'ET'
   024E   5220             DW   ' R'
   0250   4441             DW   'AD'
   0252   5441             DW   'AT'
   0254   0D0A             DW   0A0DH
   0256   0000             DW   0
                    
                           END
 NO PROGRAM ERRORS
1
 8080 MACRO ASSEMBLER, VER 3.0        ERRORS = 0      
+                                                      20:29  05/07/2017
+                                                                                      PAGE 9
      


                        SYMBOL TABLE

  * 01

  A      0007      B      0000      BACK   01F7      BLUE   000C      
  BOTH   01EB      C      0001      CDISP  006E      CHANG  0042      
  CHECK  0145      CHN15  0045      CHN20  0055      CHN30  005F      
  CLEAR  0074 *    D      0002      DAV    0001      DELAY  0000      
  DISPL  0800      DOWN   01E7      E      0003      ENTER  024A      
  FILL   0076 *    FLL12  0078      FLL20  007E      FND20  0123      
  FND30  012D      FNDCO  0116      FRZE   000F      FWD    01EE      
  GEN    002D      GEN20  0030      GREEN  000A      GT20   00F3      
  GTC20  01FD      GTC30  021D      GTC40  0226      GTCHR  01F9      
  GTCOL  00E9      H      0004      HOME   01E1      IDENT  022E      
  INDEX  01BF      INIT   016A      INST   0248      INT20  017B *    
  L      0005      M      0006      MAN20  0009      MAN30  000C      
  MAN40  0020      OFF    01F0      ON     01E9      PSW    0006      
  PTC20  010A      PTCOL  00FA      RED    0009      RETUR  01E5      
  ROWA   022A      ROWB   022C      SETUP  018F      SP     0006      
  STACK  0800      START  0003      STP    0019 *    STP20  019B      
  STP30  01A4      STP40  01B4      TAB    01C0      TBE    0002      
  THRU   01DF      TIME   D800 *    TTYON  0153      TTYOU  015E      
  UP     01F5      UPD10  009C      UPD20  00C3      UPDAT  0084      
  UPONE  00DC      UPROW  00CC      

