/******************************************************************** /******************************************************************** / 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