/ LIVING PDP8 / CONWAY'S GAME OF LIFE /--------------------------------------------------------------------- / CONFIGURATION PARAMETERS / SIZE OF THE PLAYING FIELD / MAX COLUMNS=64(DEC)=100(OCT) / MAX ROWS==64(DEC)=100(OCT) ROWS=10 COLS=10 / HAS THE FIELD LIMITS OR IS IT ENDLESS? LIMITS=1 / BORDER BEHAVIOUR FOR LIMITED FIELD / 0 - OFF FIELD POSITIONS ARE ASSUMED TO BE ALWAYS DEAD / 1 - OFF FIELD POSITIONS ARE ASSUMED TO BE ALWAYS ALIFE BORDER=0 /--------------------------------------------------------------------- / TEST PROGRAM *200 TAD DD JMS XCALC HLT DD, 30 /--------------------------------------------------------------------- / DATA HOLDING AND ACCESS / DATA IS HELD IN AN ARRAY OF WORDS, ASSIGNING ONE BIT PER POSITION. / POSITION ADDRESS IS PASSED IN AC WHILE CALLING ACCESS ROUTINES. PAGE / START ON NEW PAGE GET, 0 / GET POSITION'S VALUE DCA ADR / SAVE ADDRESS JMS LIMIT / TEST LIMIT JMP I GET / ERROR RETURN, RETURN WITH LIMIT VALUE IN AC JMS POSCAL / CALC WORD ADDRESS AND BIT POSITION SET, 0 / SET POSITION'S VALUE TO 1 CLEAR, 0 / CLEAR POSITION'S VALUE TO 0 LIMIT, 0 TAD ADR BSW / NOW ROW ADDRESS IN LOWER BITS AND K77 / MASK OUT UPPER BITS TAD KNMROW SMA JMP LGD1 / ONE LIMIT GOOD CLA TAD BORDER / BORDER STANDARD RETURN VALUE JMP I LIMIT / ERROR RETURN LGD1, CLA CLL TAD ADR AND K77 TAD KNMCO SMA JMP LGD2 CLA CLL TAD BORDER JMP I LIMIT / ERROR RETURN LGD2, ISZ LIMIT / PREPARE GOOD RETURN JMP I LIMIT / GOOD RETURN ADR, 0 / TEMPORARY ADDRESS STORAGE K77, 77 KNMCO, 1-COLS KNMROW, 1-ROWS /--------------------------------------------------------------------- / CALCULATE BIT POSITION FOR X VALUE. / RESULTS IN FOLLOWING LOCATIONS: / XW: WORD ADDRESS OF DESIRED POSITION / XB: BIT ADDRESS OF DESIRED POSITION / POSITION IN AC, HIGHEST SUPPORTED NUMBER IS 95! POSCAL, 0 DCA XBIT DCA XWORD TAD KN48 JMS MTEST TAD KN24 JMS MTEST HLT TAD KN12 JMS MTEST TAD XWORD / SHIFT BACK RESULT RAR DCA XWORD JMP I POSCAL / RETURN TO CALLER MTEST, 0 TAD XBIT SMA SKP JMP IGN12 DCA XBIT ISZ XWORD IGN12, CLA CLL TAD XWORD RAL DCA XWORD JMP I MTEST KN48, -60 KN24, -30 KN12, -14 *1000 XWORD, 0 / INTEGER DIVISION RESULT XBIT, 0 / INTIGER DIVISION'S REST /--------------------------------------------------------------------- / THIS IS IT, FOLKS! $