X-Git-Url: http://gitweb.hachti.de/?a=blobdiff_plain;f=sw%2Fsrc%2Flife%2FLIFE10.BAK;fp=sw%2Fsrc%2Flife%2FLIFE10.BAK;h=c69520c24e6ac613734e07acf3c9ec9c54b34ad1;hb=81e70d488b71bf995c459ca3a02c025993460ffa;hp=0000000000000000000000000000000000000000;hpb=07ec0278333ed187ac242dedcff13c56cf1b0b91;p=pdp8.git diff --git a/sw/src/life/LIFE10.BAK b/sw/src/life/LIFE10.BAK new file mode 100644 index 0000000..c69520c --- /dev/null +++ b/sw/src/life/LIFE10.BAK @@ -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