--- /dev/null
+/********************************************************************
+/********************************************************************
+/ MAIN PROGRAM
+ *200
+ CLA CLL
+ JMS I XDINIT
+ ION / WELCOME TO HELL!
+
+MLOOP, / MAIN EVENT LOOP
+ JMS I XDUMP / START A DUMP, PLEASE
+ JMS I XCALC / CALCULATE NEW DATA
+ CLA CLL
+
+ TAD TPTR
+ DCA DPTR
+ TAD SPTR
+ DCA TPTR
+ TAD DPTR
+ DCA SPTR
+ JMP MLOOP
+
+/********************************************************************
+/ THE CALCULATION
+ PAGE
+CCADDR, 0 / CURRENT CELL ADDRESS
+CROW, 0
+CCOL, 0
+NBORS, 0
+
+CALC, 0
+ CLA CLL
+ DCA CCADDR
+
+ TAD KROWS
+ CIA
+ DCA CROW
+
+CRLOOP, CLA CLL
+ TAD KCOLS
+ CIA
+ DCA CCOL
+
+CCLOOP,
+ / NOW, DO IT, PLEASE!
+ TAD CCADDR
+ JMS I XCOUNT
+ DCA NBORS
+
+ TAD CCADDR
+ JMS I XGET
+ SNA
+ JMP ISDEAD
+
+ISALIV, CLA CLL
+ TAD NBORS
+ TAD KN4
+ SMA
+ JMP DIE
+
+ CLA CLL
+ TAD NBORS
+ TAD KN2
+ SMA
+ JMP LIVE
+ JMP DIE
+
+ISDEAD, TAD NBORS
+ TAD KN3
+ SZA
+ JMP DIE
+ JMP LIVE
+
+LIVE, CLA CLL
+ TAD CCADDR
+ JMS I XSET / NOW, IT'S ALIVE!
+ JMP CDONE
+DIE, CLA CLL
+ TAD CCADDR
+ JMS I XCLEAR
+CDONE, CLA CLL
+
+ ISZ CCADDR
+ ISZ CCOL
+ JMP CCLOOP
+
+ TAD CCADDR
+ TAD K100
+ AND K7700
+ ISZ CROW
+ JMP CRLOOP
+
+ JMP I CALC
+KN2, -2
+KN3, -3
+KN4, -4
+K100, 100
+
+/********************************************************************
+/ DATA DUMPING
+ PAGE
+ NLINE=JMS CRLF
+ HOME=JMS HOM
+
+DBASE, 0
+DDPTR, 0
+DOFF, 0
+
+DUMPS, 0
+ JMS I XTSTRT
+ JMP I DUMPS
+ CLA
+ TAD SPTR
+ DCA DBASE
+ JMP DMPINT
+
+DUMPT, 0
+ JMS I XTSTRT
+ JMP I DUMPT
+ CLA
+ TAD TPTR
+ DCA DBASE
+ JMP DMPINT
+
+DUMP, 0
+ JMS I XTSTRT
+ JMP I DUMP
+ CLA
+ TAD DPTR
+ DCA DBASE
+
+DMPINT, DCA DOFF
+
+ TAD KROWS
+ CIA
+ DCA ROWCNT
+
+// NLINE;NLINE
+ HOME
+
+/ START OF ROW
+RLOOP, CLA CLL
+ TAD KCOLS
+ CIA
+ DCA COLCNT
+ TAD K200
+ DCA DMSK
+
+ TAD DBASE / BUFFER BASE ADDRESS
+ TAD DOFF / CURRENT WORD OFFSET
+ DCA DDPTR / TO INTERNAL POINTER
+
+/ START OF COLUMN
+CLOOP, TAD DMSK / BIT MASK, DYNAMIC
+ AND I DDPTR / COMBINE CURRENT WORD
+ SZA
+ JMP ONE
+ZERO, TAD KDEAD
+ JMP TT
+ONE, CLA
+ TAD KALIVE
+TT, JMS I XTYPE
+
+ CLA CLL
+ TAD DMSK
+ RAR
+ SZA
+ JMP MASKOK
+ TAD K200
+ ISZ DDPTR
+MASKOK, DCA DMSK
+
+ ISZ COLCNT
+ JMP CLOOP
+
+ NLINE
+
+ CLA CLL
+ TAD DOFF
+ TAD K10
+ DCA DOFF
+
+ ISZ ROWCNT
+ JMP RLOOP
+
+ JMP I XTSTOP / STOP INTERRUPT MADNESS.
+
+HOM, 0
+ CLA CLL
+ TAD K035
+ JMS I XTYPE
+ CLA CLL
+ JMS I XTYPE / FILLER CHARACTERS!
+ JMS I XTYPE
+ JMS I XTYPE
+ JMS I XTYPE
+ JMP I HOM
+
+CRLF, 0
+ CLA CLL
+ TAD CR
+ JMS I XTYPE
+ CLA CLL
+ TAD LF
+ JMS I XTYPE
+ JMP I CRLF
+
+DMSK, 0
+K035, 35
+CR, 215
+LF, 212
+
+ROWCNT, 0
+COLCNT, 0
+
+/********************************************************************
+/ NEIGHBORHOOD COUNTING
+/ (ADDRESS IN AC)
+ PAGE
+POS, 0
+
+COUNT, 0
+ DCA POS
+ DCA CNT
+
+ TAD POS
+ TAD KCOLM1 / STEP LEFT
+ TAD KROWM1 / STEP UP
+ JMS ACCNT
+
+ TAD KCOLP1
+ JMS ACCNT
+
+ TAD KCOLP1
+ JMS ACCNT
+
+ TAD KROWP1
+ JMS ACCNT
+
+ TAD KROWP1
+ JMS ACCNT
+
+ TAD KCOLM1
+ JMS ACCNT
+
+ TAD KCOLM1
+ JMS ACCNT
+
+ TAD KROWM1
+ JMS ACCNT
+
+ CLA CLL
+ TAD CNT
+ JMP I COUNT
+
+ACCNT, 0
+ DCA POS
+ TAD POS
+ JMS I XGET
+ SZA
+ ISZ CNT
+ CLA CLL
+ TAD POS
+ JMP I ACCNT
+
+CNT, 0 / COUNTER VARIABLE
+
+
+/********************************************************************
+/ DATA HOLDING AND ACCESS
+
+ PAGE / START ON NEW PAGE
+
+/ INTERNAL DATA
+
+CADR, 0 / CURRENT CELL ADDRESS
+MASK, 0 / BIT MASK TO CURRENT CELL BIT
+APTR, 0 / ACCESS POINTER TO CURRENT CELL WORD
+
+/ GET A BIT OF DATA
+GET, 0 / GET POSITION'S VALUE
+ JMS ASETUP / CHECK LIMITS, STORE ADDRESS ETC.
+ JMP I GET / ERROR RETURN, RETURN WITH LIMIT VALUE IN AC
+ TAD APTR
+ TAD SPTR / ADD SOURCE DATA BASE
+ DCA APTR
+ TAD I APTR / LOAD DATA
+ AND MASK / MASK OUT DESIRED BIT
+ SZA
+ CLA CLL IAC / MAKE A ONE OUT OF AC CONTENTS
+ JMP I GET / RETURN
+
+SET, 0 / SET POSITION'S VALUE TO 1
+ JMS ASETUP / CHECK LIMITS, STORE ADDRESS ETC.
+ JMP I SET / ERROR RETURN, RETURN WITH LIMIT VALUE IN AC
+ TAD APTR
+ TAD TPTR / ADD SOURCE DATA BASE
+ DCA APTR
+ TAD MASK / GET MASK
+ CMA / INVERT
+ AND I APTR / COMBINE WITH DATA
+ TAD MASK / SET BIT
+ DCA I APTR / UPDATE DATA
+ JMP I SET / RETURN
+
+CLEAR, 0 / CLEAR POSITION'S VALUE TO 0
+ JMS ASETUP / CHECK LIMITS, STORE ADDRESS ETC.
+ JMP I CLEAR / ERROR RETURN, RETURN WITH LIMIT VALUE IN AC
+ TAD APTR
+ TAD TPTR / ADD SOURCE DATA BASE
+ DCA APTR
+ TAD MASK / GET MASK
+ CMA / INVERT
+ AND I APTR / COMBINE WITH DATA
+ DCA I APTR / UPDATE DATA
+ JMP I CLEAR / RETURN
+
+ASETUP, 0
+ DCA CADR / SAVE ADDRESS FOR LATER USE
+
+/ LIMIT CHECK
+ TAD CADR
+ BSW / NOW ROW ADDRESS IN LOWER BITS
+ AND K77 / MASK OUT UPPER BITS
+ TAD KNMROW
+ SPA
+ JMP LGD1 / ONE LIMIT GOOD
+ CLA
+ TAD KBORD / BORDER STANDARD RETURN VALUE
+ JMP I ASETUP / ERROR RETURN
+LGD1, CLA CLL
+ TAD CADR
+ AND K77
+ TAD KNMCO
+ SPA
+ JMP LGD2
+ CLA CLL
+ TAD KBORD
+ JMP I ASETUP / ERROR RETURN
+LGD2, CLA CLL
+
+/ SETUP POINTER AND MASK
+ TAD CADR
+ RTR
+ RAR
+ AND K377
+ DCA APTR / ACCESS POINTER
+ TAD CADR
+ AND K7
+ TAD MASKSP
+ DCA MPTR
+ TAD I MPTR
+ DCA MASK
+
+ ISZ ASETUP / PREPARE GOOD RETURN
+ JMP I ASETUP / GOOD RETURN
+
+
+
+MPTR, 0
+MASKSP, MASKS
+MASKS, 200
+ 100
+ 040
+ 020
+ 010
+ 004
+ 002
+ 001
+
+
+
+