A large commit.
[pdp8.git] / sw / src / life / LIFE10.BAK
diff --git a/sw/src/life/LIFE10.BAK b/sw/src/life/LIFE10.BAK
new file mode 100644 (file)
index 0000000..c69520c
--- /dev/null
@@ -0,0 +1,131 @@
+/ 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!
+$
+
+       
\ No newline at end of file