diff --git a/56 Life for Two/javascript/lifefortwo.html b/56 Life for Two/javascript/lifefortwo.html
new file mode 100644
index 00000000..fbd70636
--- /dev/null
+++ b/56 Life for Two/javascript/lifefortwo.html
@@ -0,0 +1,9 @@
+
+
+LIFE FOR TWO
+
+
+
+
+
+
diff --git a/56 Life for Two/javascript/lifefortwo.js b/56 Life for Two/javascript/lifefortwo.js
new file mode 100644
index 00000000..a8c90e50
--- /dev/null
+++ b/56 Life for Two/javascript/lifefortwo.js
@@ -0,0 +1,209 @@
+// LIFE FOR TWO
+//
+// Converted from BASIC to Javascript by Oscar Toledo G. (nanochess)
+//
+
+function print(str)
+{
+ document.getElementById("output").appendChild(document.createTextNode(str));
+}
+
+function input()
+{
+ var input_element;
+ var input_str;
+
+ return new Promise(function (resolve) {
+ input_element = document.createElement("INPUT");
+
+ print("? ");
+ input_element.setAttribute("type", "text");
+ input_element.setAttribute("length", "50");
+ document.getElementById("output").appendChild(input_element);
+ input_element.focus();
+ input_str = undefined;
+ input_element.addEventListener("keydown", function (event) {
+ if (event.keyCode == 13) {
+ input_str = input_element.value;
+ document.getElementById("output").removeChild(input_element);
+ print(input_str);
+ print("\n");
+ resolve(input_str);
+ }
+ });
+ });
+}
+
+function tab(space)
+{
+ var str = "";
+ while (space-- > 0)
+ str += " ";
+ return str;
+}
+
+var na = [];
+var ka = [, 3,102,103,120,130,121,112,111,12,
+ 21,30,1020,1030,1011,1021,1003,1002,1012];
+var aa = [,-1,0,1,0,0,-1,0,1,-1,-1,1,-1,-1,1,1,1];
+var xa = [];
+var ya = [];
+var j;
+var k;
+var m2;
+var m3;
+
+function show_data()
+{
+ k = 0;
+ m2 = 0;
+ m3 = 0;
+ for (j = 0; j <= 6; j++) {
+ print("\n");
+ for (k = 0; k <= 6; k++) {
+ if (j == 0 || j == 6) {
+ if (k == 6)
+ print(" 0 ");
+ else
+ print(" " + k + " ");
+ } else if (k == 0 || k == 6) {
+ if (j == 6)
+ print(" 0\n");
+ else
+ print(" " + j + " ");
+ } else {
+ if (na[j][k] >= 3) {
+ for (o1 = 1; o1 <= 18; o1++) {
+ if (na[j][k] == ka[o1])
+ break;
+ }
+ if (o1 <= 18) {
+ if (o1 <= 9) {
+ na[j][k] = 100;
+ m2++;
+ print(" * ");
+ } else {
+ na[j][k] = 1000;
+ m3++;
+ print(" # ");
+ }
+ } else {
+ na[j][k] = 0;
+ print(" ");
+ }
+ } else {
+ na[j][k] = 0;
+ print(" ");
+ }
+ }
+ }
+ }
+}
+
+function process_board()
+{
+ for (j = 1; j <= 5; j++) {
+ for (k = 1; k <= 5; k++) {
+ if (na[j][k] > 99) {
+ b = 1;
+ if (na[j][k] > 999)
+ b = 10;
+ for (o1 = 1; o1 <= 15; o1 += 2) {
+ na[j + aa[o1]][k + aa[o1 + 1]] = na[j + aa[o1]][k + aa[o1 + 1]] + b;
+ }
+ }
+ }
+ }
+ show_data();
+}
+
+// Main program
+async function main()
+{
+ print(tab(33) + "LIFE2\n");
+ print(tab(15) + "CREATIVE COMPUTING MORRISTOWN, NEW JERSEY\n");
+ print("\n");
+ print("\n");
+ print("\n");
+ print(tab(10) + "U.B. LIFE GAME\n");
+ m2 = 0;
+ m3 = 0;
+ for (j = 0; j <= 6; j++) {
+ na[j] = [];
+ for (k = 0; k <= 6; k++)
+ na[j][k] = 0;
+ }
+ for (b = 1; b <= 2; b++) {
+ p1 = (b == 2) ? 30 : 3;
+ print("\n");
+ print("PLAYER " + b + " - 3 LIVE PIECES.\n");
+ for (k1 = 1; k1 <= 3; k1++) {
+ while (1) {
+ print("X,Y\n");
+ str = await input();
+ ya[b] = parseInt(str);
+ xa[b] = parseInt(str.substr(str.indexOf(",") + 1));
+ if (xa[b] > 0 && xa[b] < 6 && ya[b] > 0 && ya[b] < 5 && na[xa[b]][ya[b]] == 0)
+ break;
+ print("ILLEGAL COORDS. RETYPE\n");
+ }
+ if (b != 1) {
+ if (xa[1] == xa[2] && ya[1] == ya[2]) {
+ print("SAME COORD. SET TO 0\n");
+ na[xa[b] + 1][ya[b] + 1] = 0;
+ b = 99;
+ }
+ }
+ na[xa[b]][ya[b]] = p1;
+ }
+ }
+ show_data();
+ while (1) {
+ print("\n");
+ process_board();
+ if (m2 == 0 && m3 == 0) {
+ print("\n");
+ print("A DRAW\n");
+ break;
+ }
+ if (m3 == 0) {
+ print("\n");
+ print("PLAYER 1 IS THE WINNER\n");
+ break;
+ }
+ if (m2 == 0) {
+ print("\n");
+ print("PLAYER 2 IS THE WINNER\n");
+ break;
+ }
+ for (b = 1; b <= 2; b++) {
+ print("\n");
+ print("\n");
+ print("PLAYER " + b + " ");
+ while (1) {
+ print("X,Y\n");
+ str = await input();
+ ya[b] = parseInt(str);
+ xa[b] = parseInt(str.substr(str.indexOf(",") + 1));
+ if (xa[b] > 0 && xa[b] < 6 && ya[b] > 0 && ya[b] < 5 && na[xa[b]][ya[b]] == 0)
+ break;
+ print("ILLEGAL COORDS. RETYPE\n");
+ }
+ if (b != 1) {
+ if (xa[1] == xa[2] && ya[1] == ya[2]) {
+ print("SAME COORD. SET TO 0\n");
+ na[xa[b] + 1][ya[b] + 1] = 0;
+ b = 99;
+ }
+ }
+ if (b == 99)
+ break;
+ }
+ if (b <= 2) {
+ na[x[1]][y[1]] = 100;
+ na[x[2]][y[2]] = 1000;
+ }
+ }
+}
+
+main();