diff --git a/xtrn/3rdp-install/dreamware-chomper.ini b/xtrn/3rdp-install/dreamware-chomper.ini
new file mode 100644
index 0000000000000000000000000000000000000000..8a7afded6de25cf1de94133eb1bcd4fa3fe44322
--- /dev/null
+++ b/xtrn/3rdp-install/dreamware-chomper.ini
@@ -0,0 +1,29 @@
+Name: Chomper
+Desc: Pacman comes to your BBS
+By:   Andy Stewart, DreamWare Doors
+Cats: Games
+Subs: Puzzle
+exe: CHOMPER.EXE
+
+[md5:79ba1a4685d625d5887b30dddbbf5edd]
+ver = 1.0
+url = http://cd.textfiles.com/cream/cream22/bbs/drmcmp10.zip
+
+; below is after UNP.EXE and TPPATCH.EXE
+[md5:d0ac4ddb14873dc3b5bcf90d6b497a4e]
+ver = 1.0
+url = http://cd.textfiles.com/cream/cream22/bbs/drmcmp10.zip
+
+[prog:CHOMPER]
+;      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+name = Chomper
+;      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+cmd = chomper.exe node%#.cfg
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/dreamware.js]
+prompt = false
+required = true
\ No newline at end of file
diff --git a/xtrn/3rdp-install/dreamware-dreamtrack.ini b/xtrn/3rdp-install/dreamware-dreamtrack.ini
new file mode 100644
index 0000000000000000000000000000000000000000..83b53b0e1ff1327c0fe4a8192705acc47628cb30
--- /dev/null
+++ b/xtrn/3rdp-install/dreamware-dreamtrack.ini
@@ -0,0 +1,29 @@
+Name: DreamTRACK
+Desc: Animated Dog Racing Door
+By:   Andy Stewart, DreamWare Doors
+Cats: Games
+Subs: Chance,Sports
+exe: TRACK.EXE
+
+[md5:fa66127d6a241e434128b41cf317f596]
+ver = 1.0
+url = http://cd.textfiles.com/cream/cream09/bbs/drmtrk10.zip
+
+; below is after UNP.EXE and TPPATCH.EXE
+[md5:f8f72ec86ae9fba4421caa271926797b]
+ver = 1.0
+url = http://cd.textfiles.com/cream/cream09/bbs/drmtrk10.zip
+
+[prog:DREAMTRK]
+;      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+name = DreamTRACK
+;      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+cmd = track.exe node%#.cfg
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/dreamware.js]
+prompt = false
+required = true
\ No newline at end of file
diff --git a/xtrn/3rdp-install/dreamware-jot.ini b/xtrn/3rdp-install/dreamware-jot.ini
new file mode 100644
index 0000000000000000000000000000000000000000..c216a79daf41e98764f6aa25ab937cde3e6fe97c
--- /dev/null
+++ b/xtrn/3rdp-install/dreamware-jot.ini
@@ -0,0 +1,29 @@
+Name: Jot
+Desc: The childhood game comes to your BBS
+By:   Andy Stewart, DreamWare Doors
+Cats: Games
+Subs: Board
+exe: JOT.EXE
+
+[md5:f69399495ab03c385dc3b654a5b8b9c2]
+ver = 1.0
+url = http://cd.textfiles.com/thebbsorg/doors/word_doors/drmjot10.zip
+
+; below is after UNP.EXE and TPPATCH.EXE
+[md5:e3ae689a8d51292e0b654cf7df6964a2]
+ver = 1.0
+url = http://cd.textfiles.com/thebbsorg/doors/word_doors/drmjot10.zip
+
+[prog:DREAMJOT]
+;      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+name = Jot (DreamWare)
+;      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+cmd = jot.exe node%#.cfg
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/dreamware.js]
+prompt = false
+required = true
\ No newline at end of file
diff --git a/xtrn/3rdp-install/dreamware-lightsout.ini b/xtrn/3rdp-install/dreamware-lightsout.ini
new file mode 100644
index 0000000000000000000000000000000000000000..93d63ba8d2252bcd24a76ee09e7b631e71484d5e
--- /dev/null
+++ b/xtrn/3rdp-install/dreamware-lightsout.ini
@@ -0,0 +1,29 @@
+Name: Lights Out
+Desc: Turn out lighted blocks in 5x5 grid
+By:   Andy Stewart, DreamWare Doors
+Cats: Games
+Subs: Puzzle
+exe: LIGHTS.EXE
+
+[md5:356b4c7924693c0236260042d819f00b]
+ver = 1.0
+url = http://cd.textfiles.com/nightowl/nopv20/003A/DRMLGT10.ZIP
+
+; below is after UNP.EXE and TPPATCH.EXE
+[md5:c44aa5130ebde22340e97d9a2bcef81a]
+ver = 1.0
+url = http://cd.textfiles.com/nightowl/nopv20/003A/DRMLGT10.ZIP
+
+[prog:DREAMLO]
+;      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+name = Lights Out
+;      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+cmd = lights.exe node%#.cfg
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/dreamware.js]
+prompt = false
+required = true
\ No newline at end of file
diff --git a/xtrn/3rdp-install/dreamware-potofgold.ini b/xtrn/3rdp-install/dreamware-potofgold.ini
new file mode 100644
index 0000000000000000000000000000000000000000..f40c3962f62acd7d9e73f59e57bd9a0c53ae7d80
--- /dev/null
+++ b/xtrn/3rdp-install/dreamware-potofgold.ini
@@ -0,0 +1,29 @@
+Name: Pot of Gold
+Desc: Game of change based on Commodore C*Base BBS Mod
+By:   Andy Stewart, DreamWare Doors
+Cats: Games
+Subs: Chance
+exe: POG.EXE
+
+[md5:bffad481833ab286c1137ea9a05b9e22]
+ver = 1.0
+url = http://cd.textfiles.com/nightowl/nopv20/003A/DRMPOG10.ZIP
+
+; below is after UNP.EXE and TPPATCH.EXE
+[md5:c9b731f83672f39e78a414a409046639]
+ver = 1.0
+url = http://cd.textfiles.com/nightowl/nopv20/003A/DRMPOG10.ZIP
+
+[prog:POTGOLD]
+;      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+name = Pot of Gold
+;      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+cmd = pog.exe node%#.cfg
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/dreamware.js]
+prompt = false
+required = true
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-3pairpok.ini b/xtrn/3rdp-install/sunrise-3pairpok.ini
new file mode 100644
index 0000000000000000000000000000000000000000..7ce9edf9395268e8d4b7bb5b970216dbdfd35410
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-3pairpok.ini
@@ -0,0 +1,22 @@
+Name: 3-Pair Poker
+Desc: 3-Pair Poker is a card game that requires you to accumulate 3 Pairs to win the game. 
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: Chance
+exe: PAIR3.EXE
+
+[md5:478681f792bcaa39a4d059447b252910]
+ver = 4.8
+url = http://sunrisedoors.com/files/16Bit-3PairPoker4.8_Install.exe
+
+[prog:3PAIRPOK]
+name = 3-Pair Poker
+cmd = pair3.exe PAIR3.CFG
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-3pairpoker.js]
+prompt = false
+required = true
diff --git a/xtrn/3rdp-install/sunrise-3pairpoker.js b/xtrn/3rdp-install/sunrise-3pairpoker.js
new file mode 100644
index 0000000000000000000000000000000000000000..3fbbef0e6028d64a1e597267c04c8e1b07064e47
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-3pairpoker.js
@@ -0,0 +1,51 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+var conffile = "PAIR3.CFG";
+
+if (!file_exists(gamedir + conffile)) {
+	writeln("Conf not found: " + gamedir + conffile);
+	exit(1);
+}
+
+file_backup(gamedir + conffile, 3);
+
+var cfg_filename = js.startup_dir + conffile;
+var file = new File(cfg_filename);
+if (!file.open("r")) {
+	writeln("Error " + file.error + " opening " + file.name);
+	exit(1)
+}
+
+var lines = file.readAll();
+file.close();
+
+lines[0] = '%PCBDRIVE%%PCBDIR%\DOOR.SYS';
+lines[1] = system.name;
+
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+
+lines[7] = gamedir + "3pptop.asc";
+lines[8] = gamedir + "3pptop.ans";
+lines[9] = gamedir + "3pphof.asc";
+lines[10] = gamedir + "3pphof.ans";
+
+lines[11] = "1";
+
+var file = new File(js.startup_dir + conffile);
+if (!file.open("w")) {
+	writeln("Error " + file.error + " opening " + file.name + " for writing");
+	exit(1)
+}
+file.writeAll(lines);
+file.close();
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-4corners.ini b/xtrn/3rdp-install/sunrise-4corners.ini
new file mode 100644
index 0000000000000000000000000000000000000000..bddf4195fcb10211ab9211ad80b74df2f25ce20d
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-4corners.ini
@@ -0,0 +1,22 @@
+Name: 4-Corners Checkers
+Desc: Based on Chinese Checkers
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: Board
+exe: 4CORN.EXE
+
+[md5:c5fb431bfa95532cf1b59f44b4bb9019]
+ver = 2.1
+url = http://sunrisedoors.com/files/16Bit-4CornerCheckers2.1_Install.exe
+
+[prog:4CORNERS]
+name = 4-Corners Checkers
+cmd = 4corn.exe NODE%#.CFG
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-4corners.js]
+prompt = false
+required = true
diff --git a/xtrn/3rdp-install/sunrise-4corners.js b/xtrn/3rdp-install/sunrise-4corners.js
new file mode 100644
index 0000000000000000000000000000000000000000..fff2c11f6db74e78c513b3d081fcb4d7cd363bb7
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-4corners.js
@@ -0,0 +1,49 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+var conffilesrc = "SAMPLE.CFG";
+
+if (!file_exists(gamedir + conffilesrc)) {
+	writeln("Conf not found: " + gamedir + conffilesrc);
+	exit(1);
+}
+
+var cfg_filename = js.startup_dir + conffilesrc;
+var file = new File(cfg_filename);
+if (!file.open("r")) {
+	writeln("Error " + file.error + " opening " + file.name);
+	exit(1)
+}
+
+var lines = file.readAll();
+file.close();
+
+lines[2] = system.name;
+lines[3] = system.operator;
+lines[5] = gamedir + "4corn.ans";
+lines[6] = gamedir + "4corn.asc";
+lines[7] = gamedir + "cornhof.ans";
+lines[8] = gamedir + "cornhof.asc";	
+
+for (i in system.node_list) {
+	var nodenum = parseInt(i, 10) + 1;
+	lines[1] = system.node_list[i].dir + "\DOOR.SYS";
+	
+	writeln("Creating " + js.startup_dir + 'NODE' + nodenum + '.CFG');
+	
+	var file = new File(js.startup_dir + 'NODE' + nodenum + '.CFG');
+	if (!file.open("w")) {
+		writeln("Error " + file.error + " opening " + file.name + " for writing");
+		exit(1)
+	}
+	file.writeAll(lines);
+	file.close();
+}
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-aceydeucey.ini b/xtrn/3rdp-install/sunrise-aceydeucey.ini
new file mode 100644
index 0000000000000000000000000000000000000000..65db18ddb2d72b87d33fb7d6860ecf2a069f9c51
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-aceydeucey.ini
@@ -0,0 +1,22 @@
+Name: AceyDeucey
+Desc: Fast-paced card game
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: Chance
+exe: ACEY.EXE
+
+[md5:ca9f2f1efe19acded4f8a282e1d21d27]
+ver = 2.4
+url = http://sunrisedoors.com/files/16-Bit-AceyDeucey2.4_Install.exe
+
+[prog:ACEYD]
+name = AceyDeucey (Sunrise)
+cmd = acey.exe NODE%#.CFG /FD
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-aceydeucey.js]
+prompt = false
+required = true
diff --git a/xtrn/3rdp-install/sunrise-aceydeucey.js b/xtrn/3rdp-install/sunrise-aceydeucey.js
new file mode 100644
index 0000000000000000000000000000000000000000..ad43907a98d3c1ca294aa05a1732e8c9c43c0109
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-aceydeucey.js
@@ -0,0 +1,54 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+var conffilesrc = "ACEY.CFG";
+
+if (!file_exists(gamedir + conffilesrc)) {
+	writeln("Conf not found: " + gamedir + conffilesrc);
+	exit(1);
+}
+
+var cfg_filename = js.startup_dir + conffilesrc;
+var file = new File(cfg_filename);
+if (!file.open("r")) {
+	writeln("Error " + file.error + " opening " + file.name);
+	exit(1)
+}
+
+var lines = file.readAll();
+file.close();
+
+lines[1] = system.name;
+
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+
+lines[7] = gamedir + "aceyd.ans";
+lines[8] = gamedir + "aceyd.asc";
+lines[9] = gamedir + "aceydhof.ans";
+lines[10] = gamedir + "aceydhof.asc";
+lines[11] = "1";
+
+for (i in system.node_list) {
+	var nodenum = parseInt(i, 10) + 1;
+	lines[0] = system.node_list[i].dir + "\DOOR.SYS";
+	
+	writeln("Creating " + js.startup_dir + 'NODE' + nodenum + '.CFG');
+	
+	var file = new File(js.startup_dir + 'NODE' + nodenum + '.CFG');
+	if (!file.open("w")) {
+		writeln("Error " + file.error + " opening " + file.name + " for writing");
+		exit(1)
+	}
+	file.writeAll(lines);
+	file.close();
+}
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-atlantis.ini b/xtrn/3rdp-install/sunrise-atlantis.ini
new file mode 100644
index 0000000000000000000000000000000000000000..3085845658c05c8c08d6596f31b3dcf4d85c1bb0
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-atlantis.ini
@@ -0,0 +1,22 @@
+Name: Atlantis
+Desc: Multinode adventure, strategy style door game
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: Adventure
+exe: ATLANTIS.EXE
+
+[md5:dca8ae7382a2e6d62ff0023c58c2e61a]
+ver = 2.1
+url = http://sunrisedoors.com/files/16Bit-Atlantis2.1_Install.exe
+
+[prog:SRATL]
+name = Atlantis
+cmd = atlantis.exe NODE%#.CFG
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-atlantis.js]
+prompt = false
+required = true
diff --git a/xtrn/3rdp-install/sunrise-atlantis.js b/xtrn/3rdp-install/sunrise-atlantis.js
new file mode 100644
index 0000000000000000000000000000000000000000..c9ffbe0e41605b585403249bbf3dd70f9e3341f7
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-atlantis.js
@@ -0,0 +1,48 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+var conffilesrc = "ATLANTIS.CFG";
+
+if (!file_exists(gamedir + conffilesrc)) {
+	writeln("Conf not found: " + gamedir + conffilesrc);
+	exit(1);
+}
+
+var cfg_filename = js.startup_dir + conffilesrc;
+var file = new File(cfg_filename);
+if (!file.open("r")) {
+	writeln("Error " + file.error + " opening " + file.name);
+	exit(1)
+}
+
+var lines = file.readAll();
+file.close();
+
+lines[1] = system.name;
+
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+
+for (i in system.node_list) {
+	var nodenum = parseInt(i, 10) + 1;
+	lines[0] = system.node_list[i].dir + "\DOOR.SYS";
+	
+	writeln("Creating " + js.startup_dir + 'NODE' + nodenum + '.CFG');
+	
+	var file = new File(js.startup_dir + 'NODE' + nodenum + '.CFG');
+	if (!file.open("w")) {
+		writeln("Error " + file.error + " opening " + file.name + " for writing");
+		exit(1)
+	}
+	file.writeAll(lines);
+	file.close();
+}
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-baseballdice.ini b/xtrn/3rdp-install/sunrise-baseballdice.ini
new file mode 100644
index 0000000000000000000000000000000000000000..a278d136a1a294e6be60b2ef08fa534f2c7e6884
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-baseballdice.ini
@@ -0,0 +1,22 @@
+Name: Baseball Dice
+Desc: Baseball using dice to hit the ball
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: Sports
+exe: BBDICE.EXE
+
+[md5:29db4d1e1188478dd9e1dd55c633edd8]
+ver = 3.1
+url = http://sunrisedoors.com/files/16Bit-BaseballDice3.1_Install.exe
+
+[prog:BBDICE]
+name = Baseball Dice
+cmd = bbdice.exe NODE%#.CFG
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-baseballdice.js]
+prompt = false
+required = true
diff --git a/xtrn/3rdp-install/sunrise-baseballdice.js b/xtrn/3rdp-install/sunrise-baseballdice.js
new file mode 100644
index 0000000000000000000000000000000000000000..cb4104638683a44674ac13b5daf074d6634d9071
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-baseballdice.js
@@ -0,0 +1,53 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+var conffilesrc = "BBDICE.CFG";
+
+if (!file_exists(gamedir + conffilesrc)) {
+	writeln("Conf not found: " + gamedir + conffilesrc);
+	exit(1);
+}
+
+var cfg_filename = js.startup_dir + conffilesrc;
+var file = new File(cfg_filename);
+if (!file.open("r")) {
+	writeln("Error " + file.error + " opening " + file.name);
+	exit(1)
+}
+
+var lines = file.readAll();
+file.close();
+
+lines[1] = system.name;
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+
+lines[7] = gamedir + "bbd.ans";
+lines[8] = gamedir + "bbd.asc";
+lines[9] = gamedir + "bbdhof.ans";
+lines[10] = gamedir + "bbdhof.asc";
+lines[11] = "1";
+
+for (i in system.node_list) {
+	var nodenum = parseInt(i, 10) + 1;
+	lines[0] = system.node_list[i].dir + "\DOOR.SYS";
+	
+	writeln("Creating " + js.startup_dir + 'NODE' + nodenum + '.CFG');
+	
+	var file = new File(js.startup_dir + 'NODE' + nodenum + '.CFG');
+	if (!file.open("w")) {
+		writeln("Error " + file.error + " opening " + file.name + " for writing");
+		exit(1)
+	}
+	file.writeAll(lines);
+	file.close();
+}
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-betsyross.ini b/xtrn/3rdp-install/sunrise-betsyross.ini
new file mode 100644
index 0000000000000000000000000000000000000000..7d3e97397fb693a1500d30e9299726f5e371eb00
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-betsyross.ini
@@ -0,0 +1,22 @@
+Name: Betsy Ross
+Desc: Fast paced solitaire card game
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: Board
+exe: BETSY.EXE
+
+[md5:b8f6e80884ef7263602c2e86a6b345de]
+ver = 4.5
+url = http://sunrisedoors.com/files/16Bit-BetsyRoss4.5_Install.exe
+
+[prog:BETSY]
+name = Betsy Ross
+cmd = betsy.exe NODE%#.CFG /FD
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-betsyross.js]
+prompt = false
+required = true
diff --git a/xtrn/3rdp-install/sunrise-betsyross.js b/xtrn/3rdp-install/sunrise-betsyross.js
new file mode 100644
index 0000000000000000000000000000000000000000..8eccece0da21f7442ec6edff53b19a762fd6327c
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-betsyross.js
@@ -0,0 +1,52 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+var conffilesrc = "BETSY.CFG";
+
+if (!file_exists(gamedir + conffilesrc)) {
+	writeln("Conf not found: " + gamedir + conffilesrc);
+	exit(1);
+}
+
+var cfg_filename = js.startup_dir + conffilesrc;
+var file = new File(cfg_filename);
+if (!file.open("r")) {
+	writeln("Error " + file.error + " opening " + file.name);
+	exit(1)
+}
+
+var lines = file.readAll();
+file.close();
+
+lines[1] = system.name;
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+
+lines[6] = gamedir + "betsy.ans";
+lines[7] = gamedir + "betsy.asc";
+lines[8] = gamedir + "betsyhof.ans";
+lines[9] = gamedir + "betsyhof.asc";
+
+for (i in system.node_list) {
+	var nodenum = parseInt(i, 10) + 1;
+	lines[0] = system.node_list[i].dir + "\DOOR.SYS";
+	
+	writeln("Creating " + js.startup_dir + 'NODE' + nodenum + '.CFG');
+	
+	var file = new File(js.startup_dir + 'NODE' + nodenum + '.CFG');
+	if (!file.open("w")) {
+		writeln("Error " + file.error + " opening " + file.name + " for writing");
+		exit(1)
+	}
+	file.writeAll(lines);
+	file.close();
+}
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-blackjack.ini b/xtrn/3rdp-install/sunrise-blackjack.ini
new file mode 100644
index 0000000000000000000000000000000000000000..6f56fde5483162406d3d9aab16606924b3a78460
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-blackjack.ini
@@ -0,0 +1,22 @@
+Name: Blackjack (Sunrise)
+Desc: Blackjack game
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: Chance
+exe: BJACK.EXE
+
+[md5:9763f2824abf034a56045d6f03c4dcd2]
+ver = 2.5
+url = http://sunrisedoors.com/files/16Bit-Blackjack2.5_Install.exe
+
+[prog:SRBJ]
+name = Blackjack (Sunrise)
+cmd = bjack.exe NODE%#.CFG /FD
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-blackjack.js]
+prompt = false
+required = true
diff --git a/xtrn/3rdp-install/sunrise-blackjack.js b/xtrn/3rdp-install/sunrise-blackjack.js
new file mode 100644
index 0000000000000000000000000000000000000000..54629542aa34d19d56d967b5e1c9b431e4f4231d
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-blackjack.js
@@ -0,0 +1,53 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+var conffilesrc = "BJACK.CFG";
+
+if (!file_exists(gamedir + conffilesrc)) {
+	writeln("Conf not found: " + gamedir + conffilesrc);
+	exit(1);
+}
+
+var cfg_filename = js.startup_dir + conffilesrc;
+var file = new File(cfg_filename);
+if (!file.open("r")) {
+	writeln("Error " + file.error + " opening " + file.name);
+	exit(1)
+}
+
+var lines = file.readAll();
+file.close();
+
+lines[1] = system.name;
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+
+lines[7] = gamedir + "srbj.ans";
+lines[8] = gamedir + "srbj.asc";
+lines[9] = gamedir + "srbjhof.ans";
+lines[10] = gamedir + "srbjhof.asc";
+lines[11] = "1";
+
+for (i in system.node_list) {
+	var nodenum = parseInt(i, 10) + 1;
+	lines[0] = system.node_list[i].dir + "\DOOR.SYS";
+	
+	writeln("Creating " + js.startup_dir + 'NODE' + nodenum + '.CFG');
+	
+	var file = new File(js.startup_dir + 'NODE' + nodenum + '.CFG');
+	if (!file.open("w")) {
+		writeln("Error " + file.error + " opening " + file.name + " for writing");
+		exit(1)
+	}
+	file.writeAll(lines);
+	file.close();
+}
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-boxdice.ini b/xtrn/3rdp-install/sunrise-boxdice.ini
new file mode 100644
index 0000000000000000000000000000000000000000..ec040445f689bc2101c1666d80051fcd64ccf06f
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-boxdice.ini
@@ -0,0 +1,22 @@
+Name: Box Dice (Sunrise)
+Desc: Another fast-paced dice game where the object is to remove all 24 boxes from the grid
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: Chance
+exe: BOXDICE.EXE
+
+[md5:d2430cd5b967264c69c2c1ea4038001a]
+ver = 4.4
+url = http://sunrisedoors.com/files/16Bit-BoxDice4.4_Install.exe
+
+[prog:SRBOXD]
+name = Box Dice (Sunrise)
+cmd = boxdice.exe NODE%#.CFG /FD
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-boxdice.js]
+prompt = false
+required = true
diff --git a/xtrn/3rdp-install/sunrise-boxdice.js b/xtrn/3rdp-install/sunrise-boxdice.js
new file mode 100644
index 0000000000000000000000000000000000000000..363c893f455d2ee0e926d9e09d2b12a4a83b3646
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-boxdice.js
@@ -0,0 +1,52 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+var conffilesrc = "BOXDICE.CFG";
+
+if (!file_exists(gamedir + conffilesrc)) {
+	writeln("Conf not found: " + gamedir + conffilesrc);
+	exit(1);
+}
+
+var cfg_filename = js.startup_dir + conffilesrc;
+var file = new File(cfg_filename);
+if (!file.open("r")) {
+	writeln("Error " + file.error + " opening " + file.name);
+	exit(1)
+}
+
+var lines = file.readAll();
+file.close();
+
+lines[1] = system.name;
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+
+lines[7] = gamedir + "srboxd.ans";
+lines[8] = gamedir + "srboxd.asc";
+lines[9] = gamedir + "srboxd.ans";
+lines[10] = gamedir + "srboxd.asc";
+
+for (i in system.node_list) {
+	var nodenum = parseInt(i, 10) + 1;
+	lines[0] = system.node_list[i].dir + "\DOOR.SYS";
+	
+	writeln("Creating " + js.startup_dir + 'NODE' + nodenum + '.CFG');
+	
+	var file = new File(js.startup_dir + 'NODE' + nodenum + '.CFG');
+	if (!file.open("w")) {
+		writeln("Error " + file.error + " opening " + file.name + " for writing");
+		exit(1)
+	}
+	file.writeAll(lines);
+	file.close();
+}
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-boxpoker.ini b/xtrn/3rdp-install/sunrise-boxpoker.ini
new file mode 100644
index 0000000000000000000000000000000000000000..66b1d5400aa4ca64612f5d7a11854722db45bf77
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-boxpoker.ini
@@ -0,0 +1,22 @@
+Name: Box Poker (Sunrise)
+Desc: lay 5 card stud poker on a 5x5 board grid.
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: Chance
+exe: BOXPOKER.EXE
+
+[md5:67fa7113296da611bfef7f45599cc3b9]
+ver = 6.0
+url = http://sunrisedoors.com/files/16-BIT-BoxPoker6.0_Install.exe
+
+[prog:SRBOXPKR]
+name = Box Poker (Sunrise)
+cmd = boxpoker.exe NODE%#.CFG /FD
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-boxpoker.js]
+prompt = false
+required = true
diff --git a/xtrn/3rdp-install/sunrise-boxpoker.js b/xtrn/3rdp-install/sunrise-boxpoker.js
new file mode 100644
index 0000000000000000000000000000000000000000..d710621f1d9eb70dbbc3c659e48cbc1a9674b7e7
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-boxpoker.js
@@ -0,0 +1,52 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+var conffilesrc = "BOXPOKER.CFG";
+
+if (!file_exists(gamedir + conffilesrc)) {
+	writeln("Conf not found: " + gamedir + conffilesrc);
+	exit(1);
+}
+
+var cfg_filename = js.startup_dir + conffilesrc;
+var file = new File(cfg_filename);
+if (!file.open("r")) {
+	writeln("Error " + file.error + " opening " + file.name);
+	exit(1)
+}
+
+var lines = file.readAll();
+file.close();
+
+lines[1] = system.name;
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+
+lines[8] = gamedir + "srboxpkr.ans";
+lines[9] = gamedir + "srboxpkr.asc";
+lines[10] = gamedir + "srboxpkr.ans";
+lines[11] = gamedir + "srboxpkr.asc";
+
+for (i in system.node_list) {
+	var nodenum = parseInt(i, 10) + 1;
+	lines[0] = system.node_list[i].dir + "\DOOR.SYS";
+	
+	writeln("Creating " + js.startup_dir + 'NODE' + nodenum + '.CFG');
+	
+	var file = new File(js.startup_dir + 'NODE' + nodenum + '.CFG');
+	if (!file.open("w")) {
+		writeln("Error " + file.error + " opening " + file.name + " for writing");
+		exit(1)
+	}
+	file.writeAll(lines);
+	file.close();
+}
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-chainreaction.ini b/xtrn/3rdp-install/sunrise-chainreaction.ini
new file mode 100644
index 0000000000000000000000000000000000000000..1251421da3b9a92cb8a9f6383ccb8fee673261f9
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-chainreaction.ini
@@ -0,0 +1,22 @@
+Name: Chain Reaction
+Desc: Players try to guess words based on their relationship with the previous or following word.
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: Word
+exe: CHREACT.EXE
+
+[md5:6f9cb4200fd460a3790a3c3fd96335dd]
+ver = 3.1
+url = http://sunrisedoors.com/files/16-Bit-ChainReaction3.1_Install.exe
+
+[prog:CHAINR]
+name = Chain Reaction
+cmd = chreact.exe %f
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-chainreaction.js]
+prompt = false
+required = true
diff --git a/xtrn/3rdp-install/sunrise-chainreaction.js b/xtrn/3rdp-install/sunrise-chainreaction.js
new file mode 100644
index 0000000000000000000000000000000000000000..372a9a9ac2c7fece49239ca516388cdd27c78b1a
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-chainreaction.js
@@ -0,0 +1,42 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+var conffilesrc = "SAMPLE.CFG";
+
+if (!file_exists(gamedir + conffilesrc)) {
+	writeln("Conf not found: " + gamedir + conffilesrc);
+	exit(1);
+}
+
+var cfg_filename = js.startup_dir + conffilesrc;
+var file = new File(cfg_filename);
+if (!file.open("r")) {
+	writeln("Error " + file.error + " opening " + file.name);
+	exit(1)
+}
+
+var lines = file.readAll();
+file.close();
+
+lines[0] = system.name;
+lines[1] = system.operator;
+lines[3] = gamedir + "reactsc.ans";
+lines[4] = gamedir + "reactsc.asc";
+
+file_backup(gamedir + "CHREACT.CFG", 3);
+
+var file = new File(js.startup_dir + 'CHREACT.CFG');
+if (!file.open("w")) {
+	writeln("Error " + file.error + " opening " + file.name + " for writing");
+	exit(1)
+}
+file.writeAll(lines);
+file.close();
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-colonies.ini b/xtrn/3rdp-install/sunrise-colonies.ini
new file mode 100644
index 0000000000000000000000000000000000000000..338d48bc70d86388a83a8edc8660cc87a73d1e7f
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-colonies.ini
@@ -0,0 +1,35 @@
+Name: Colonies
+Desc: War Style Strategy Game
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: War,Strategy
+exe: COLCFG.EXE
+
+[md5:4cde33f5c11e83442e021394aca9cbd3]
+ver = 3.5
+url = http://sunrisedoors.com/files/16Bit-Colonies3.5_Install.exe
+
+[prog:SRCOL]
+name = Colonies
+cmd = colonies.exe NODE%#.CFG
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_SH
+type = XTRN_GAP
+clean_cmd = del inuse.flg
+
+[pre-eval:file_exists(startup_dir + 'COLMAINT.EXE')]
+prompt = false
+required = true
+fail = Run COLONY35.EXE -d to install first
+
+[exec:../3rdp-install/sunrise-colonies.js]
+prompt = false
+required = true
+
+[event:SRCOLMNT]
+cmd = colmaint.exe
+name = Sunrise Colonies Daily Maintenance
+; all days
+days = 127
+time = 0:00
diff --git a/xtrn/3rdp-install/sunrise-colonies.js b/xtrn/3rdp-install/sunrise-colonies.js
new file mode 100644
index 0000000000000000000000000000000000000000..dd1990d207f2002d4ae73f12142c69cc5aa13fb2
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-colonies.js
@@ -0,0 +1,37 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+
+var lines = [];
+lines[1] = system.name;
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+lines[4] = 'N';
+lines[5] = '2';
+lines[6] = '60';
+lines[7] = '5';
+lines[8] = strftime("%m-%d-%Y", time());
+
+for (i in system.node_list) {
+	var nodenum = parseInt(i, 10) + 1;
+	lines[0] = system.node_list[i].dir + "\DOOR.SYS";
+	
+	writeln("Creating " + js.startup_dir + 'NODE' + nodenum + '.CFG');
+	
+	var file = new File(js.startup_dir + 'NODE' + nodenum + '.CFG');
+	if (!file.open("w")) {
+		writeln("Error " + file.error + " opening " + file.name + " for writing");
+		exit(1)
+	}
+	file.writeAll(lines);
+	file.close();
+}
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-concentration.ini b/xtrn/3rdp-install/sunrise-concentration.ini
new file mode 100644
index 0000000000000000000000000000000000000000..0cb92c2617185b263b1a5856d47177c85db345fc
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-concentration.ini
@@ -0,0 +1,22 @@
+Name: Concentration (Sunrise)
+Desc: Correctly guess the 5-digit number concealed behind the boxes
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: Board
+exe: CONCENT.EXE
+
+[md5:2065b75c5b4c4282b060b3a526c095df]
+ver = 2.5
+url = http://sunrisedoors.com/files/16-Bit-Concentration2.5_Install.exe
+
+[prog:SRCON]
+name = Concentration (Sunrise)
+cmd = concent.exe NODE%#.CFG /FD
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-concentration.js]
+prompt = false
+required = true
diff --git a/xtrn/3rdp-install/sunrise-concentration.js b/xtrn/3rdp-install/sunrise-concentration.js
new file mode 100644
index 0000000000000000000000000000000000000000..8d180ba3f611975ccc92c673592df9c4fecb6daa
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-concentration.js
@@ -0,0 +1,53 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+var conffilesrc = "CONCENT.CFG";
+
+if (!file_exists(gamedir + conffilesrc)) {
+	writeln("Conf not found: " + gamedir + conffilesrc);
+	exit(1);
+}
+
+var cfg_filename = js.startup_dir + conffilesrc;
+var file = new File(cfg_filename);
+if (!file.open("r")) {
+	writeln("Error " + file.error + " opening " + file.name);
+	exit(1)
+}
+
+var lines = file.readAll();
+file.close();
+
+lines[1] = system.name;
+
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+
+lines[7] = gamedir + "srcon.ans";
+lines[8] = gamedir + "srcon.asc";
+lines[9] = gamedir + "srconhof.ans";
+lines[10] = gamedir + "srconhof.asc";
+
+for (i in system.node_list) {
+	var nodenum = parseInt(i, 10) + 1;
+	lines[0] = system.node_list[i].dir + "\DOOR.SYS";
+	
+	writeln("Creating " + js.startup_dir + 'NODE' + nodenum + '.CFG');
+	
+	var file = new File(js.startup_dir + 'NODE' + nodenum + '.CFG');
+	if (!file.open("w")) {
+		writeln("Error " + file.error + " opening " + file.name + " for writing");
+		exit(1)
+	}
+	file.writeAll(lines);
+	file.close();
+}
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-cribbage.ini b/xtrn/3rdp-install/sunrise-cribbage.ini
new file mode 100644
index 0000000000000000000000000000000000000000..2f67e2677575f055d4634add448640cc6190b967
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-cribbage.ini
@@ -0,0 +1,22 @@
+Name: Cribbage Squares
+Desc: Create 8 Cribbage hands of 5 cards each
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: Board
+exe: CRIBSQ.EXE
+
+[md5:505a1c98e3f548944f8255ab4538b66d]
+ver = 1.4
+url = http://sunrisedoors.com/files/16Bit-CribbageSquares1.4_Install.exe
+
+[prog:SRCRIB]
+name = Cribbage Squares
+cmd = cribsq.exe CRIBSQ.CFG /FD
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-cribbage.js]
+prompt = false
+required = true
diff --git a/xtrn/3rdp-install/sunrise-cribbage.js b/xtrn/3rdp-install/sunrise-cribbage.js
new file mode 100644
index 0000000000000000000000000000000000000000..70d9358efba438800e53093b2295ec9789d786dd
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-cribbage.js
@@ -0,0 +1,51 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+var conffilesrc = "CRIBSQ.CFG";
+
+if (!file_exists(gamedir + conffilesrc)) {
+	writeln("Conf not found: " + gamedir + conffilesrc);
+	exit(1);
+}
+
+file_backup(gamedir + conffilesrc, 3);
+
+var cfg_filename = js.startup_dir + conffilesrc;
+var file = new File(cfg_filename);
+if (!file.open("r")) {
+	writeln("Error " + file.error + " opening " + file.name);
+	exit(1)
+}
+
+var lines = file.readAll();
+file.close();
+
+lines[0] = "%PCBDRIVE%%PCBDIR%\DOOR.SYS";
+lines[1] = system.name;
+
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+
+lines[7] = gamedir + "scrib.ans";
+lines[8] = gamedir + "scrib.asc";
+lines[9] = gamedir + "scribhof.ans";
+lines[10] = gamedir + "scribhof.asc";
+lines[11] = "1";
+lines[38] = "G";
+
+var file = new File(js.startup_dir + conffilesrc);
+if (!file.open("w")) {
+	writeln("Error " + file.error + " opening " + file.name + " for writing");
+	exit(1)
+}
+file.writeAll(lines);
+file.close();
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-crypto.ini b/xtrn/3rdp-install/sunrise-crypto.ini
new file mode 100644
index 0000000000000000000000000000000000000000..621f1745503c0402b8c9ae7a2d444b04c646f627
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-crypto.ini
@@ -0,0 +1,29 @@
+Name: Cryptograms
+Desc: Break the code by substituting letters and analyzing the sentence structure
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: Word
+exe: CRYPTO.EXE
+
+[md5:4733e09265727afc6a343d5f33e77bdb]
+ver = 2.8
+url = http://sunrisedoors.com/files/16Bit-Cryptograms2.8_Install.exe
+
+[prog:SRSCRYPT]
+name = Cryptograms
+cmd = crypto.exe CRYPTO.CFG /FD
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[event:SRCRYMNT]
+cmd = crypenvt CRYPTO.CFG
+name = Sunrise Cryptograms Maintenance
+; all days
+days = 127
+time = 0:00
+
+[exec:../3rdp-install/sunrise-crypto.js]
+prompt = false
+required = true
diff --git a/xtrn/3rdp-install/sunrise-crypto.js b/xtrn/3rdp-install/sunrise-crypto.js
new file mode 100644
index 0000000000000000000000000000000000000000..77b8c0f2cf3504482adf017d7f5460a01b854eb2
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-crypto.js
@@ -0,0 +1,48 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+var conffilesrc = "CRYPTO.CFG";
+
+if (!file_exists(gamedir + conffilesrc)) {
+	writeln("Conf not found: " + gamedir + conffilesrc);
+	exit(1);
+}
+
+file_backup(gamedir + conffilesrc, 3);
+
+var cfg_filename = js.startup_dir + conffilesrc;
+var file = new File(cfg_filename);
+if (!file.open("r")) {
+	writeln("Error " + file.error + " opening " + file.name);
+	exit(1)
+}
+
+var lines = file.readAll();
+file.close();
+
+lines[0] = "%PCBDRIVE%%PCBDIR%\DOOR.SYS";
+lines[1] = system.name;
+
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+
+lines[7] = gamedir + "sccrypto.asc";
+lines[8] = gamedir + "sccrypto.ans";
+lines[9] = "1";
+
+var file = new File(js.startup_dir + conffilesrc);
+if (!file.open("w")) {
+	writeln("Error " + file.error + " opening " + file.name + " for writing");
+	exit(1)
+}
+file.writeAll(lines);
+file.close();
+
+writeln("Config generation complete");
+
+exit(0);
diff --git a/xtrn/3rdp-install/sunrise-dominoes.ini b/xtrn/3rdp-install/sunrise-dominoes.ini
new file mode 100644
index 0000000000000000000000000000000000000000..1f89f0b84b61b2a41340bfd1c7067dc8a2aa3e7f
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-dominoes.ini
@@ -0,0 +1,22 @@
+Name: Dominoes (Sunrise)
+Desc: Dominoes are played with a Double-Six pack of 28 tiles
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: Board
+exe: DOMINOES.EXE
+
+[md5:c09582175e23b361fc0d0417bc3aa1ac]
+ver = 3.9
+url = http://sunrisedoors.com/files/16Bit-Dominoes3.9Install.exe
+
+[prog:SRDOM]
+name = Dominoes (Sunrise)
+cmd = dominoes.exe DOMINOES.CFG /FD
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-dominoes.js]
+prompt = false
+required = true
diff --git a/xtrn/3rdp-install/sunrise-dominoes.js b/xtrn/3rdp-install/sunrise-dominoes.js
new file mode 100644
index 0000000000000000000000000000000000000000..11c6601a082cc2157fd9b52a840cd5089a45a853
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-dominoes.js
@@ -0,0 +1,49 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+var conffilesrc = "DOMINOES.CFG";
+
+if (!file_exists(gamedir + conffilesrc)) {
+	writeln("Conf not found: " + gamedir + conffilesrc);
+	exit(1);
+}
+
+file_backup(gamedir + conffilesrc, 3);
+
+var cfg_filename = js.startup_dir + conffilesrc;
+var file = new File(cfg_filename);
+if (!file.open("r")) {
+	writeln("Error " + file.error + " opening " + file.name);
+	exit(1)
+}
+
+var lines = file.readAll();
+file.close();
+
+lines[0] = "%PCBDRIVE%%PCBDIR%\DOOR.SYS";
+lines[1] = system.name;
+
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+
+lines[11] = gamedir + "scdom.asc";
+lines[12] = gamedir + "scdom.ans";
+lines[13] = gamedir + "scdomhof.asc";
+lines[14] = gamedir + "scdomhof.ans";
+
+var file = new File(js.startup_dir + conffilesrc);
+if (!file.open("w")) {
+	writeln("Error " + file.error + " opening " + file.name + " for writing");
+	exit(1)
+}
+file.writeAll(lines);
+file.close();
+
+writeln("Config generation complete");
+
+exit(0);
diff --git a/xtrn/3rdp-install/sunrise-ganglandwars.ini b/xtrn/3rdp-install/sunrise-ganglandwars.ini
new file mode 100644
index 0000000000000000000000000000000000000000..3d068cf1ab665fff12e29bae0531ac0e99da3f39
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-ganglandwars.ini
@@ -0,0 +1,29 @@
+Name: Gangland Wars
+Desc: Do battle with Street Punks, Recruit Gang Members, visit the Gangland Boss, etc.
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: RPG
+exe: GANGLAND.EXE
+
+[md5:9ceb950786cce8512597f35e95c69c5d]
+ver = 3.7
+url = http://sunrisedoors.com/files/16Bit-GanglandWars3.7_Install.exe
+
+[prog:GANGLAND]
+name = Gangland Wars
+cmd = gangland.exe NODE%#.CFG
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-ganglandwars.js]
+prompt = false
+required = true
+
+[event:SRGLMNT]
+cmd = gwmaint.exe
+name = Sunrise Gangland Wars Maintenance
+; all days
+days = 127
+time = 0:00
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-ganglandwars.js b/xtrn/3rdp-install/sunrise-ganglandwars.js
new file mode 100644
index 0000000000000000000000000000000000000000..dfa28c8e9e3910d0776199e760fce6ce7f26fe7d
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-ganglandwars.js
@@ -0,0 +1,41 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+var conffilesrc = "GANGLAND.CFG";
+
+file_backup(gamedir + conffilesrc, 3);
+
+var lines = [];
+lines[1] = system.name;
+
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+lines[4] = "20";
+lines[5] = "3";
+lines[6] = "3";
+lines[7] = "3";
+lines[8] = "G";
+
+for (i in system.node_list) {
+	var nodenum = parseInt(i, 10) + 1;
+	lines[0] = system.node_list[i].dir + "\DOOR.SYS";
+	
+	writeln("Creating " + js.startup_dir + 'NODE' + nodenum + '.CFG');
+	
+	var file = new File(js.startup_dir + 'NODE' + nodenum + '.CFG');
+	if (!file.open("w")) {
+		writeln("Error " + file.error + " opening " + file.name + " for writing");
+		exit(1)
+	}
+	file.writeAll(lines);
+	file.close();
+}
+
+writeln("Config generation complete");
+
+exit(0);
diff --git a/xtrn/3rdp-install/sunrise-groandice.ini b/xtrn/3rdp-install/sunrise-groandice.ini
new file mode 100644
index 0000000000000000000000000000000000000000..1424cbafa3e954236179223867fbeebd87e3bdfc
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-groandice.ini
@@ -0,0 +1,22 @@
+Name: Groan Dice
+Desc: GROAN Dice is a fast paced dice game played with 3 8-sided die.
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: Chance
+exe: GROAN.EXE
+
+[md5:48ad0d25578c8488e7e41e2d60cbbc20]
+ver = 3.1
+url = http://sunrisedoors.com/files/16Bit-GroanDice3.1_Install.exe
+
+[prog:GROAN]
+name = Groan Dice
+cmd = groan.exe GROAN.CFG /FD
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-groandice.js]
+prompt = false
+required = true
diff --git a/xtrn/3rdp-install/sunrise-groandice.js b/xtrn/3rdp-install/sunrise-groandice.js
new file mode 100644
index 0000000000000000000000000000000000000000..4c3ab94acb4e6ae566d8dcc02f4e01cc50bc7365
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-groandice.js
@@ -0,0 +1,52 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+var conffilesrc = "GROAN.CFG";
+
+var cfg_filename = gamedir + conffilesrc;
+
+if (!file_exists(cfg_filename)) {
+	writeln("Conf not found: " + cfg_filename);
+	exit(1);
+}
+
+var file = new File(cfg_filename);
+if (!file.open("r")) {
+	writeln("Error " + file.error + " opening " + file.name);
+	exit(1)
+}
+
+var lines = file.readAll();
+file.close();
+
+file_backup(cfg_filename, 3);
+
+lines[0] = "%PCBDRIVE%%PCBDIR%\DOOR.SYS";
+lines[1] = system.name;
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+
+lines[7] = gamedir + "groan.asc";
+lines[8] = gamedir + "groan.ans";
+lines[9] = gamedir + "groanhof.asc";
+lines[10] = gamedir + "groanhof.ans";
+lines[11] = "1";
+
+writeln("Creating " + cfg_filename);
+
+var file = new File(cfg_filename);
+if (!file.open("w")) {
+	writeln("Error " + file.error + " opening " + file.name + " for writing");
+	exit(1)
+}
+file.writeAll(lines);
+file.close();
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-hackarama.ini b/xtrn/3rdp-install/sunrise-hackarama.ini
new file mode 100644
index 0000000000000000000000000000000000000000..5913b62b6f446d7a670af3895ee343465c562879
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-hackarama.ini
@@ -0,0 +1,22 @@
+Name: Hackarama
+Desc: Hack program codes, visit HIGH HACKER, hack bank accts, rip-off hack codes, & more
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: Hack,Other
+exe: HACKCFG.EXE
+
+[md5:675e8ef8a76f601a458528fb0d8af339]
+ver = 4.5
+url = http://sunrisedoors.com/files/16Bit-Hackarama4.5_Install.exe
+
+[prog:HACKRAMA]
+name = Hackarama
+cmd = hackram.exe NODE%#.CFG /FD
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-hackarama.js]
+prompt = false
+required = true
diff --git a/xtrn/3rdp-install/sunrise-hackarama.js b/xtrn/3rdp-install/sunrise-hackarama.js
new file mode 100644
index 0000000000000000000000000000000000000000..0dfdace525a420bf9ec326fe4230e8ff6590e54e
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-hackarama.js
@@ -0,0 +1,38 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+
+var lines = [];
+
+lines[1] = system.name;
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+lines[4] = "70";
+lines[5] = "3";
+lines[6] = "3";
+lines[7] = "3";
+lines[8] = "3";
+
+for (i in system.node_list) {
+	var nodenum = parseInt(i, 10) + 1;
+	lines[0] = system.node_list[i].dir + "\DOOR.SYS";
+	
+	writeln("Creating " + js.startup_dir + 'NODE' + nodenum + '.CFG');
+	
+	var file = new File(js.startup_dir + 'NODE' + nodenum + '.CFG');
+	if (!file.open("w")) {
+		writeln("Error " + file.error + " opening " + file.name + " for writing");
+		exit(1)
+	}
+	file.writeAll(lines);
+	file.close();
+}
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-hexxwars.ini b/xtrn/3rdp-install/sunrise-hexxwars.ini
new file mode 100644
index 0000000000000000000000000000000000000000..f6f2aff67019064706405d552c03f1c2a67372b4
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-hexxwars.ini
@@ -0,0 +1,29 @@
+Name: Hexx Wars
+Desc: Fun and challenging strategic board game
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: Strategy,Board
+exe: HEXXWARS.EXE
+
+[md5:cd322bdb91eafb12b4c767ba0eb549d0]
+ver = 2.0
+url = http://sunrisedoors.com/files/16Bit-HexxWars2.0_Install.exe
+
+[prog:HEXXWARS]
+name = Hexx Wars
+cmd = hexxwars.exe NODE%#.CFG
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-hexxwars.js]
+prompt = false
+required = true
+
+[event:HEXXWRMNT]
+cmd = hexmaint.exe 3 5
+name = Sunrise Hexx Wars Maintenance
+; all days
+days = 127
+time = 0:00
diff --git a/xtrn/3rdp-install/sunrise-hexxwars.js b/xtrn/3rdp-install/sunrise-hexxwars.js
new file mode 100644
index 0000000000000000000000000000000000000000..1d792dfd0fd1b8195879f4c4bd5e89d664b843df
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-hexxwars.js
@@ -0,0 +1,41 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+
+var lines = [];
+
+lines[2] = system.name;
+lines[3] = system.operator;
+lines[4] = "0";
+lines[5] = gamedir + "hexx.ans";
+lines[6] = gamedir + "hexx.asc";
+lines[7] = gamedir + "hexxhof.ans";
+lines[8] = gamedir + "hexxhof.asc";
+lines[9] = "10";
+lines[10] = "3";
+lines[11] = "20";
+lines[12] = "3";
+
+for (i in system.node_list) {
+	var nodenum = parseInt(i, 10) + 1;
+	lines[0] = nodenum;
+	lines[1] = system.node_list[i].dir + "\DOOR.SYS";
+	
+	writeln("Creating " + js.startup_dir + 'NODE' + nodenum + '.CFG');
+	
+	var file = new File(js.startup_dir + 'NODE' + nodenum + '.CFG');
+	if (!file.open("w")) {
+		writeln("Error " + file.error + " opening " + file.name + " for writing");
+		exit(1)
+	}
+	file.writeAll(lines);
+	file.close();
+}
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-hilo.ini b/xtrn/3rdp-install/sunrise-hilo.ini
new file mode 100644
index 0000000000000000000000000000000000000000..754145e7028f6e344a17e45e7971e88a04833bee
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-hilo.ini
@@ -0,0 +1,22 @@
+Name: Hi-Lo (Sunrise)
+Desc: Game of HI-LO
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: Chance
+exe: HILO.EXE
+
+[md5:0e948794c4151a6f6b49dab0c674b62c]
+ver = 2.3
+url = http://sunrisedoors.com/files/16Bit-Hilo2.3_Install.exe
+
+[prog:SRHILO]
+name = Hi-Lo (Sunrise)
+cmd = hilo.exe HILO.CFG /FD
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-hilo.js]
+prompt = false
+required = true
diff --git a/xtrn/3rdp-install/sunrise-hilo.js b/xtrn/3rdp-install/sunrise-hilo.js
new file mode 100644
index 0000000000000000000000000000000000000000..6cdc173dff9129750326707c6768e75d2c49fddf
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-hilo.js
@@ -0,0 +1,51 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+var conffilesrc = "HILO.CFG";
+
+var cfg_filename = gamedir + conffilesrc;
+
+if (!file_exists(cfg_filename)) {
+	writeln("Conf not found: " + cfg_filename);
+	exit(1);
+}
+
+var file = new File(cfg_filename);
+if (!file.open("r")) {
+	writeln("Error " + file.error + " opening " + file.name);
+	exit(1)
+}
+
+var lines = file.readAll();
+file.close();
+
+file_backup(cfg_filename, 3);
+
+lines[0] = "%PCBDRIVE%%PCBDIR%\DOOR.SYS";
+lines[1] = system.name;
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+
+lines[7] = gamedir + "srhilo.asc";
+lines[8] = gamedir + "srhilo.ans";
+lines[9] = gamedir + "srhilohf.asc";
+lines[10] = gamedir + "srhilohf.ans";
+
+writeln("Creating " + cfg_filename);
+
+var file = new File(cfg_filename);
+if (!file.open("w")) {
+	writeln("Error " + file.error + " opening " + file.name + " for writing");
+	exit(1)
+}
+file.writeAll(lines);
+file.close();
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-hiroll.ini b/xtrn/3rdp-install/sunrise-hiroll.ini
new file mode 100644
index 0000000000000000000000000000000000000000..39fdb9c97ebc367226f3b6a028afe006651db8ac
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-hiroll.ini
@@ -0,0 +1,22 @@
+Name: Hiroll Dice
+Desc: Fast-paced board game where you remove num combos based on roll of two dice.
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: Chance
+exe: HIROLL.EXE
+
+[md5:9705ecc6d1bed2094e7e50f652db2b5d]
+ver = 6.6
+url = http://sunrisedoors.com/files/16Bit-Hiroll6.6_Install.exe
+
+[prog:SRHIROLL]
+name = Hiroll Dice
+cmd = hiroll.exe HIROLL.CFG /FD
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-hirolldice.js]
+prompt = false
+required = true
diff --git a/xtrn/3rdp-install/sunrise-hirolldice.js b/xtrn/3rdp-install/sunrise-hirolldice.js
new file mode 100644
index 0000000000000000000000000000000000000000..e1013a1142337ff0df2b463dedbd974e4e2d3c39
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-hirolldice.js
@@ -0,0 +1,51 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+var conffilesrc = "HIROLL.CFG";
+
+var cfg_filename = gamedir + conffilesrc;
+
+if (!file_exists(cfg_filename)) {
+	writeln("Conf not found: " + cfg_filename);
+	exit(1);
+}
+
+var file = new File(cfg_filename);
+if (!file.open("r")) {
+	writeln("Error " + file.error + " opening " + file.name);
+	exit(1)
+}
+
+var lines = file.readAll();
+file.close();
+
+file_backup(cfg_filename, 3);
+
+lines[0] = "%PCBDRIVE%%PCBDIR%\DOOR.SYS";
+lines[1] = system.name;
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+
+lines[7] = gamedir + "srhiro.asc";
+lines[8] = gamedir + "srhiro.ans";
+lines[9] = gamedir + "srhirohf.asc";
+lines[10] = gamedir + "srhirohf.ans";
+
+writeln("Creating " + cfg_filename);
+
+var file = new File(cfg_filename);
+if (!file.open("w")) {
+	writeln("Error " + file.error + " opening " + file.name + " for writing");
+	exit(1)
+}
+file.writeAll(lines);
+file.close();
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-keno.ini b/xtrn/3rdp-install/sunrise-keno.ini
new file mode 100644
index 0000000000000000000000000000000000000000..98a1cc6ba407e3b7208d3a74e3905c568c97c21f
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-keno.ini
@@ -0,0 +1,22 @@
+Name: Keno (Sunrise)
+Desc: an You pick 8 numbers that match the computer's picks?
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: Chance
+exe: KENO.EXE
+
+[md5:b1005c2c87287640b9f1beea754820f9]
+ver = 3.0
+url = http://sunrisedoors.com/files/16Bit-Keno3.0_Install.exe
+
+[prog:SRKENO]
+name = Keno (Sunrise)
+cmd = keno.exe KENO.CFG /FD
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-keno.js]
+prompt = false
+required = true
diff --git a/xtrn/3rdp-install/sunrise-keno.js b/xtrn/3rdp-install/sunrise-keno.js
new file mode 100644
index 0000000000000000000000000000000000000000..2b94e77a074e028369df9f90d0fcdedfe07eb004
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-keno.js
@@ -0,0 +1,53 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+var conffilesrc = "KENO.CFG";
+
+var cfg_filename = gamedir + conffilesrc;
+
+if (!file_exists(cfg_filename)) {
+	writeln("Conf not found: " + cfg_filename);
+	exit(1);
+}
+
+var file = new File(cfg_filename);
+if (!file.open("r")) {
+	writeln("Error " + file.error + " opening " + file.name);
+	exit(1)
+}
+
+var lines = file.readAll();
+file.close();
+
+file_backup(cfg_filename, 3);
+
+lines[0] = "%PCBDRIVE%%PCBDIR%\DOOR.SYS";
+lines[1] = system.name;
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+
+lines[8] = "Y"; // automatic reset each month
+lines[10] = "1"; // adopt a door
+lines[11] = gamedir + "srkeno.asc";
+lines[12] = gamedir + "srkeno.ans";
+lines[13] = gamedir + "srkenohf.asc";
+lines[14] = gamedir + "srkenohf.ans";
+
+writeln("Creating " + cfg_filename);
+
+var file = new File(cfg_filename);
+if (!file.open("w")) {
+	writeln("Error " + file.error + " opening " + file.name + " for writing");
+	exit(1)
+}
+file.writeAll(lines);
+file.close();
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-laddersdice.ini b/xtrn/3rdp-install/sunrise-laddersdice.ini
new file mode 100644
index 0000000000000000000000000000000000000000..cbbc8ef31d0231b6bb73167ed126b68cbdfba1ed
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-laddersdice.ini
@@ -0,0 +1,22 @@
+Name: Ladders Dice
+Desc: Highly challenging, fast-paced dice game.
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: Chance
+exe: LADDERS.EXE
+
+[md5:b68f1fdd4e3d6aa96165bea0d6c5b0e2]
+ver = 5.2
+url = http://sunrisedoors.com/files/16Bit-LaddersDice5.2_Install.exe
+
+[prog:SRLDICE]
+name = Ladders Dice
+cmd = ladders.exe LADDERS.CFG /FD
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-laddersdice.js]
+prompt = false
+required = true
diff --git a/xtrn/3rdp-install/sunrise-laddersdice.js b/xtrn/3rdp-install/sunrise-laddersdice.js
new file mode 100644
index 0000000000000000000000000000000000000000..5cc6b15150da7a45570fb747db5514b10d1a29d8
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-laddersdice.js
@@ -0,0 +1,50 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+var conffilesrc = "LADDERS.CFG";
+var cfg_filename = gamedir + conffilesrc;
+
+if (!file_exists(cfg_filename)) {
+	writeln("Conf not found: " + cfg_filename);
+	exit(1);
+}
+
+file_backup(cfg_filename, 3);
+
+var file = new File(cfg_filename);
+if (!file.open("r")) {
+	writeln("Error " + file.error + " opening " + file.name);
+	exit(1)
+}
+
+var lines = file.readAll();
+file.close();
+
+lines[0] = "%PCBDRIVE%%PCBDIR%\DOOR.SYS";
+lines[1] = system.name;
+
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+
+lines[7] = gamedir + "sldice.asc";
+lines[8] = gamedir + "sldice.ans";
+lines[9] = gamedir + "sldicehof.asc";
+lines[10] = gamedir + "sldicehof.ans";
+lines[11] = "1"; // no adopt a door
+
+var file = new File(js.startup_dir + conffilesrc);
+if (!file.open("w")) {
+	writeln("Error " + file.error + " opening " + file.name + " for writing");
+	exit(1)
+}
+file.writeAll(lines);
+file.close();
+
+writeln("Config generation complete");
+
+exit(0);
diff --git a/xtrn/3rdp-install/sunrise-legendsofole.ini b/xtrn/3rdp-install/sunrise-legendsofole.ini
new file mode 100644
index 0000000000000000000000000000000000000000..93b775860e2a74dde505c15939bea64f382bae15
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-legendsofole.ini
@@ -0,0 +1,32 @@
+Name: Legends of Ole
+Desc: Set back in the time of Knights, the King has chosen you to become the ultimate Knight
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: RPG
+exe: LOO.EXE
+
+; Make sure to install BRUN45.EXE into the game directory
+
+[md5:964f7eff43e67f611ecf6eaae1b1cb8f]
+ver = 2.1
+url = http://sunrisedoors.com/files/16Bit-LegensOfOle2.1_Install.exe
+
+[prog:SRLEG]
+name = Legends of Ole
+cmd = loo.exe NODE%#.CFG
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+note = You will need BRUN45.EXE installed into your game directory.
+
+[exec:../3rdp-install/sunrise-legendsofole.js]
+prompt = false
+required = true
+
+[event:SRLEGMNT]
+cmd = loomaint.exe /M
+name = Sunrise Legends of Ole Maintenance
+; all days
+days = 127
+time = 0:00
diff --git a/xtrn/3rdp-install/sunrise-legendsofole.js b/xtrn/3rdp-install/sunrise-legendsofole.js
new file mode 100644
index 0000000000000000000000000000000000000000..7f2638978add6783f95f208ef7e4006b1c33aba8
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-legendsofole.js
@@ -0,0 +1,47 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+var conffilesrc = "LOO.CFG";
+
+if (!file_exists(gamedir + conffilesrc)) {
+	writeln("Conf not found: " + gamedir + conffilesrc);
+	exit(1);
+}
+
+var cfg_filename = js.startup_dir + conffilesrc;
+var file = new File(cfg_filename);
+if (!file.open("r")) {
+	writeln("Error " + file.error + " opening " + file.name);
+	exit(1)
+}
+
+var lines = file.readAll();
+file.close();
+
+lines[1] = system.name;
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+
+for (i in system.node_list) {
+	var nodenum = parseInt(i, 10) + 1;
+	lines[0] = system.node_list[i].dir + "\DOOR.SYS";
+	
+	writeln("Creating " + js.startup_dir + 'NODE' + nodenum + '.CFG');
+	
+	var file = new File(js.startup_dir + 'NODE' + nodenum + '.CFG');
+	if (!file.open("w")) {
+		writeln("Error " + file.error + " opening " + file.name + " for writing");
+		exit(1)
+	}
+	file.writeAll(lines);
+	file.close();
+}
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-lettermatch.ini b/xtrn/3rdp-install/sunrise-lettermatch.ini
new file mode 100644
index 0000000000000000000000000000000000000000..7acc77e594494b130e8d215fcfa0694841addf7e
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-lettermatch.ini
@@ -0,0 +1,22 @@
+Name: Letter Match
+Desc: Tests your memory and knowledge of the category subject chosen by the Sysop
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: Word
+exe: LMATCH.EXE
+
+[md5:443bb7878f540e9e98a9ba3dd0eece8b]
+ver = 2.5
+url = http://sunrisedoors.com/files/16Bit-LetterMatch2.5_Install.exe
+
+[prog:SRLETTER]
+name = Letter Match
+cmd = lmatch.exe LMATCH.CFG /FD
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-lettermatch.js]
+prompt = false
+required = true
diff --git a/xtrn/3rdp-install/sunrise-lettermatch.js b/xtrn/3rdp-install/sunrise-lettermatch.js
new file mode 100644
index 0000000000000000000000000000000000000000..e72cac5eec8abb998c7dfb4cdb0513d56f5b5331
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-lettermatch.js
@@ -0,0 +1,52 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+var conffilesrc = "LMATCH.CFG";
+
+var cfg_filename = gamedir + conffilesrc;
+
+if (!file_exists(cfg_filename)) {
+	writeln("Conf not found: " + cfg_filename);
+	exit(1);
+}
+
+var file = new File(cfg_filename);
+if (!file.open("r")) {
+	writeln("Error " + file.error + " opening " + file.name);
+	exit(1)
+}
+
+var lines = file.readAll();
+file.close();
+
+file_backup(cfg_filename, 3);
+
+lines[0] = "%PCBDRIVE%%PCBDIR%\DOOR.SYS";
+lines[1] = system.name;
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+
+lines[7] = gamedir + "srlet.asc";
+lines[8] = gamedir + "srlet.ans";
+lines[9] = gamedir + "srlethof.asc";
+lines[10] = gamedir + "srlethof.ans";
+lines[14] = gamedir + "LMATCH.CAT";
+
+writeln("Creating " + cfg_filename);
+
+var file = new File(cfg_filename);
+if (!file.open("w")) {
+	writeln("Error " + file.error + " opening " + file.name + " for writing");
+	exit(1)
+}
+file.writeAll(lines);
+file.close();
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-lostinspace.ini b/xtrn/3rdp-install/sunrise-lostinspace.ini
new file mode 100644
index 0000000000000000000000000000000000000000..deb8c2a1709d3f9fdafa3d8580a9aa3d4665a881
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-lostinspace.ini
@@ -0,0 +1,29 @@
+Name: Lost in Space
+Desc: Space-based RPG
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: RPG
+exe: LIS.EXE
+
+[md5:bcd630c7b8075968f15eb946be06d9da]
+ver = 2.6
+url = http://sunrisedoors.com/files/16Bit-LostInSpace2.6_Install.exe
+
+[prog:SRLOST]
+name = Lost in Space
+cmd = lis.exe LIS%#.CFG /FD
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-lostinspace.js]
+prompt = false
+required = true
+
+[event:SRLOPMT]
+cmd = lismaint.exe
+name = Sunrise Lost in Space Maintenance
+; all days
+days = 127
+time = 0:00
diff --git a/xtrn/3rdp-install/sunrise-lostinspace.js b/xtrn/3rdp-install/sunrise-lostinspace.js
new file mode 100644
index 0000000000000000000000000000000000000000..822da2ecdc712148d0e3b318fc37e40c8ab1bd1c
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-lostinspace.js
@@ -0,0 +1,37 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+
+var lines = [];
+
+lines[1] = system.name;
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+lines[4] = "2000"; // starting currency
+lines[5] = "20"; // enemy engages per day
+lines[6] = "2"; // player engages per day
+lines[7] = "0"; // ?
+
+for (i in system.node_list) {
+	var nodenum = parseInt(i, 10) + 1;
+	lines[0] = system.node_list[i].dir + "\DOOR.SYS";
+	
+	writeln("Creating " + js.startup_dir + 'LIS' + nodenum + '.CFG');
+	
+	var file = new File(js.startup_dir + 'LIS' + nodenum + '.CFG');
+	if (!file.open("w")) {
+		writeln("Error " + file.error + " opening " + file.name + " for writing");
+		exit(1)
+	}
+	file.writeAll(lines);
+	file.close();
+}
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-lottomania.ini b/xtrn/3rdp-install/sunrise-lottomania.ini
new file mode 100644
index 0000000000000000000000000000000000000000..3b043ca69db88b461ed2d19f2504a1c20c5a788b
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-lottomania.ini
@@ -0,0 +1,22 @@
+Name: LOTTO Mania!
+Desc: Players can scratch Lotto Tickets, play the Lottery, and more
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: Chance
+exe: LOTTO.EXE
+
+[md5:1493fee536bb804a5e18ea9297c9d701]
+ver = 3.5
+url = http://sunrisedoors.com/files/16Bit-Lottomania3.5_Install.exe
+
+[prog:SRLOTTO]
+name = LOTTO Mania!
+cmd = lotto.exe NODE%#.CFG /FD
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-lottomania.js]
+prompt = false
+required = true
diff --git a/xtrn/3rdp-install/sunrise-lottomania.js b/xtrn/3rdp-install/sunrise-lottomania.js
new file mode 100644
index 0000000000000000000000000000000000000000..b51660900515059b58194d68b4e8a35339f1d07f
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-lottomania.js
@@ -0,0 +1,38 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+
+var lines = [];
+
+lines[1] = system.name;
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+lines[4] = "2"; // lotto plays per day
+lines[5] = "1"; // scratch tickets per day
+lines[6] = "1"; // hockey wagers per day
+lines[7] = "1"; // football wagers per day
+lines[8] = "1"; // basketball wagers per day
+
+for (i in system.node_list) {
+	var nodenum = parseInt(i, 10) + 1;
+	lines[0] = system.node_list[i].dir + "\DOOR.SYS";
+	
+	writeln("Creating " + js.startup_dir + 'NODE' + nodenum + '.CFG');
+	
+	var file = new File(js.startup_dir + 'NODE' + nodenum + '.CFG');
+	if (!file.open("w")) {
+		writeln("Error " + file.error + " opening " + file.name + " for writing");
+		exit(1)
+	}
+	file.writeAll(lines);
+	file.close();
+}
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-montecarlo.ini b/xtrn/3rdp-install/sunrise-montecarlo.ini
new file mode 100644
index 0000000000000000000000000000000000000000..6d23eb1b78c4a7a05a037163f84f22db16f33a2d
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-montecarlo.ini
@@ -0,0 +1,22 @@
+Name: Monte Carlo Solitaire
+Desc: http://sunrisedoors.com/files/16Bit-MonteCarlo5.4_Install.exe
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: Board,Cards
+exe: MONTE.EXE
+
+[md5:3875c4c3d31b778de5aaafd118ee09ef]
+ver = 5.4
+url = http://sunrisedoors.com/files/16Bit-MonteCarlo5.4_Install.exe
+
+[prog:SRMONTE]
+name = Monte Carlo Solitaire
+cmd = monte.exe MONTE.CFG /FD
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-montecarlo.js]
+prompt = false
+required = true
diff --git a/xtrn/3rdp-install/sunrise-montecarlo.js b/xtrn/3rdp-install/sunrise-montecarlo.js
new file mode 100644
index 0000000000000000000000000000000000000000..0f743923d145b1778641f3feabdadcab175e7dfe
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-montecarlo.js
@@ -0,0 +1,52 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+var conffilesrc = "MONTE.CFG";
+
+var cfg_filename = gamedir + conffilesrc;
+
+if (!file_exists(cfg_filename)) {
+	writeln("Conf not found: " + cfg_filename);
+	exit(1);
+}
+
+var file = new File(cfg_filename);
+if (!file.open("r")) {
+	writeln("Error " + file.error + " opening " + file.name);
+	exit(1)
+}
+
+var lines = file.readAll();
+file.close();
+
+file_backup(cfg_filename, 3);
+
+lines[0] = "%PCBDRIVE%%PCBDIR%\DOOR.SYS";
+lines[1] = system.name;
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+
+lines[7] = gamedir + "srmonte.asc";
+lines[8] = gamedir + "srmonte.ans";
+lines[9] = gamedir + "srmonlof.asc";
+lines[10] = gamedir + "srmonhof.ans";
+lines[11] = "1"; // no adopt-a-door
+
+writeln("Creating " + cfg_filename);
+
+var file = new File(cfg_filename);
+if (!file.open("w")) {
+	writeln("Error " + file.error + " opening " + file.name + " for writing");
+	exit(1)
+}
+file.writeAll(lines);
+file.close();
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-overunder.ini b/xtrn/3rdp-install/sunrise-overunder.ini
new file mode 100644
index 0000000000000000000000000000000000000000..d16cf06d24d65049fc6fbb095510c25df4e466bd
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-overunder.ini
@@ -0,0 +1,22 @@
+Name: Over Under Solitaire
+Desc: A highly challenging, fast-paced, version of Solitaire requiring skill, luck and good strategy
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: Board,Cards
+exe: OVERUNDR.EXE
+
+[md5:ac3d0b388970840e0b8cd8f9e319358b]
+ver = 5.3
+url = http://sunrisedoors.com/files/16Bit-OverUnder5.3_Install.exe
+
+[prog:SROVER]
+name = Over Under Solitaire
+cmd = overundr.exe OVERUNDR.CFG /FD
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-overunder.js]
+prompt = false
+required = true
diff --git a/xtrn/3rdp-install/sunrise-overunder.js b/xtrn/3rdp-install/sunrise-overunder.js
new file mode 100644
index 0000000000000000000000000000000000000000..99b9bdd48d8871ac9d963bf2ce2363e34232ad61
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-overunder.js
@@ -0,0 +1,52 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+var conffilesrc = "OVERUNDR.CFG";
+
+var cfg_filename = gamedir + conffilesrc;
+
+if (!file_exists(cfg_filename)) {
+	writeln("Conf not found: " + cfg_filename);
+	exit(1);
+}
+
+var file = new File(cfg_filename);
+if (!file.open("r")) {
+	writeln("Error " + file.error + " opening " + file.name);
+	exit(1)
+}
+
+var lines = file.readAll();
+file.close();
+
+file_backup(cfg_filename, 3);
+
+lines[0] = "%PCBDRIVE%%PCBDIR%\DOOR.SYS";
+lines[1] = system.name;
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+
+lines[7] = gamedir + "srover.asc";
+lines[8] = gamedir + "srover.ans";
+lines[9] = gamedir + "srovrhof.asc";
+lines[10] = gamedir + "srovrhof.ans";
+lines[11] = "1"; // no adopt-a-door
+
+writeln("Creating " + cfg_filename);
+
+var file = new File(cfg_filename);
+if (!file.open("w")) {
+	writeln("Error " + file.error + " opening " + file.name + " for writing");
+	exit(1)
+}
+file.writeAll(lines);
+file.close();
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-pentasim.ini b/xtrn/3rdp-install/sunrise-pentasim.ini
new file mode 100644
index 0000000000000000000000000000000000000000..76d7a92173a16e8419db3bd0c329762639c9b3c7
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-pentasim.ini
@@ -0,0 +1,29 @@
+Name: Pentasim
+Desc: The year is 2184 and Earth has been taken over by the Cyborg Army
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: RPG,Strategy
+exe: PENTASIM.EXE
+
+[md5:9457d3caab6b395a49b02b5b814ee82a]
+ver = 2.5
+url = http://sunrisedoors.com/files/16Bit-Pentasim2.5_Install.exe
+
+[prog:PENTASIM]
+name = Pentasim
+cmd = pentasim.exe NODE%#.CFG /FD
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-pentasim.js]
+prompt = false
+required = true
+
+[event:PENTMNT]
+cmd = pmaint.exe
+name = Sunrise Pentasim Maintenance
+; all days
+days = 127
+time = 0:00
diff --git a/xtrn/3rdp-install/sunrise-pentasim.js b/xtrn/3rdp-install/sunrise-pentasim.js
new file mode 100644
index 0000000000000000000000000000000000000000..a9fd1db1e8a18244377f176aae9ac6b0c1acdfaf
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-pentasim.js
@@ -0,0 +1,37 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+
+var lines = [];
+
+lines[1] = system.name;
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+lines[4] = "1000"; // krrons player starts with
+lines[5] = "20"; // cyborg battles per day
+lines[6] = "2"; // ckm card games per day
+lines[7] = "1"; // scripts allowed per day
+
+for (i in system.node_list) {
+	var nodenum = parseInt(i, 10) + 1;
+	lines[0] = system.node_list[i].dir + "\DOOR.SYS";
+	
+	writeln("Creating " + js.startup_dir + 'NODE' + nodenum + '.CFG');
+	
+	var file = new File(js.startup_dir + 'NODE' + nodenum + '.CFG');
+	if (!file.open("w")) {
+		writeln("Error " + file.error + " opening " + file.name + " for writing");
+		exit(1)
+	}
+	file.writeAll(lines);
+	file.close();
+}
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-questfornora.ini b/xtrn/3rdp-install/sunrise-questfornora.ini
new file mode 100644
index 0000000000000000000000000000000000000000..7d5440749086d4110d5572030a0b58e9cb9c2cb5
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-questfornora.ini
@@ -0,0 +1,29 @@
+Name: Quest for Nora
+Desc:  Battle cavemen, convicts, aliens and other time travelers to return to your time
+By:   Al Lawrence, Sunrise Door Software, Jim Webb, Lynn Webb, Lounge Software
+Cats: Games
+Subs: RPG
+exe: QFN.EXE
+
+[md5:fee2a85b233aa96c3aced895f7f47bdc]
+ver = 7.5
+url = http://sunrisedoors.com/files/16Bit-QuestForNora7.5_Install.exe
+
+[prog:SRNORA]
+name = Quest for Nora
+cmd = qfn.exe QUEST%#.CFG /FD
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-questfornora.js]
+prompt = false
+required = true
+
+[event:SRNORAMT]
+cmd = qfnmaint.exe
+name = Sunrise Quest for Nora Maintenance
+; all days
+days = 127
+time = 0:00
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-questfornora.js b/xtrn/3rdp-install/sunrise-questfornora.js
new file mode 100644
index 0000000000000000000000000000000000000000..0d03b98439d3eee8fe1489e1ebe9c85cef60ec36
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-questfornora.js
@@ -0,0 +1,38 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+
+var lines = [];
+
+lines[1] = system.name;
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+lines[4] = "5"; // games allowed per day
+lines[5] = "1000"; // rubies each player starts with
+lines[6] = "30"; // warrior battles player gets per day
+lines[7] = "2"; // player battles player gets per day
+lines[8] = "N"; // cleasn mode
+
+for (i in system.node_list) {
+	var nodenum = parseInt(i, 10) + 1;
+	lines[0] = system.node_list[i].dir + "\DOOR.SYS";
+	
+	writeln("Creating " + js.startup_dir + 'QUEST' + nodenum + '.CFG');
+	
+	var file = new File(js.startup_dir + 'QUEST' + nodenum + '.CFG');
+	if (!file.open("w")) {
+		writeln("Error " + file.error + " opening " + file.name + " for writing");
+		exit(1)
+	}
+	file.writeAll(lines);
+	file.close();
+}
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-rescue.ini b/xtrn/3rdp-install/sunrise-rescue.ini
new file mode 100644
index 0000000000000000000000000000000000000000..103a6a2bbbc77d5eafcc2ebb60f8b18ec9e5c6e3
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-rescue.ini
@@ -0,0 +1,22 @@
+Name: Hotel Rescue
+Desc: Rescue all the quests before the bombs go off
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: Puzzle
+exe: RESCUE.EXE
+
+[md5:86ac3246bf1917e8a23abea26424b528]
+ver = 3.6
+url = http://sunrisedoors.com/files/16Bit-Rescue3.6_Install.exe
+
+[prog:SRRESCUE]
+name = Hotel Rescue
+cmd = rescue.exe RESCUE.CFG /FD
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-rescue.js]
+prompt = false
+required = true
diff --git a/xtrn/3rdp-install/sunrise-rescue.js b/xtrn/3rdp-install/sunrise-rescue.js
new file mode 100644
index 0000000000000000000000000000000000000000..97fd981271cc24e5d967c676575acfdf05e6944f
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-rescue.js
@@ -0,0 +1,53 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+var conffilesrc = "RESCUE.CFG";
+
+var cfg_filename = gamedir + conffilesrc;
+
+if (!file_exists(cfg_filename)) {
+	writeln("Conf not found: " + cfg_filename);
+	exit(1);
+}
+
+var file = new File(cfg_filename);
+if (!file.open("r")) {
+	writeln("Error " + file.error + " opening " + file.name);
+	exit(1)
+}
+
+var lines = file.readAll();
+file.close();
+
+file_backup(cfg_filename, 3);
+
+lines[0] = "%PCBDRIVE%%PCBDIR%\DOOR.SYS";
+lines[1] = system.name;
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+
+lines[7] = gamedir + "srresc.asc";
+lines[8] = gamedir + "srresc.ans";
+lines[9] = gamedir + "srreshof.asc";
+lines[10] = gamedir + "srreshof.ans";
+lines[11] = "1"; // do not display adopt a door
+
+
+writeln("Creating " + cfg_filename);
+
+var file = new File(cfg_filename);
+if (!file.open("w")) {
+	writeln("Error " + file.error + " opening " + file.name + " for writing");
+	exit(1)
+}
+file.writeAll(lines);
+file.close();
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-rockinradio.ini b/xtrn/3rdp-install/sunrise-rockinradio.ini
new file mode 100644
index 0000000000000000000000000000000000000000..349a60bb2277b49321e7b0074844fd33b074b7d5
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-rockinradio.ini
@@ -0,0 +1,22 @@
+Name: Rockin Radio
+Desc: Here's your chance to finally be a D. J. and have your own radio show
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: RPG
+exe: RRADIO.EXE
+
+[md5:d000aa8e4a4bd76e489d511b47f9edcc]
+ver = 2.5
+url = http://sunrisedoors.com/files/16Bit-RockinRadio2.5_Install.exe
+
+[prog:SRROCKIN]
+name = Rockin Radio
+cmd = rradio.exe NODE%#.CFG /FD
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-rockinradio.js]
+prompt = false
+required = true
diff --git a/xtrn/3rdp-install/sunrise-rockinradio.js b/xtrn/3rdp-install/sunrise-rockinradio.js
new file mode 100644
index 0000000000000000000000000000000000000000..997da76a1c516f6e88a95fed0d0bb966c07960b5
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-rockinradio.js
@@ -0,0 +1,36 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+
+var lines = [];
+lines[1] = system.name;
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+lines[4] = "2"; // player steals per day
+lines[5] = "3"; // commercials per day
+lines[6] = "3"; // advertisements per day
+lines[7] = "3"; // promos per day
+
+for (i in system.node_list) {
+	var nodenum = parseInt(i, 10) + 1;
+	lines[0] = system.node_list[i].dir + "\DOOR.SYS";
+	
+	writeln("Creating " + js.startup_dir + 'NODE' + nodenum + '.CFG');
+	
+	var file = new File(js.startup_dir + 'NODE' + nodenum + '.CFG');
+	if (!file.open("w")) {
+		writeln("Error " + file.error + " opening " + file.name + " for writing");
+		exit(1)
+	}
+	file.writeAll(lines);
+	file.close();
+}
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-rocklandtrivia.ini b/xtrn/3rdp-install/sunrise-rocklandtrivia.ini
new file mode 100644
index 0000000000000000000000000000000000000000..78c189cc2bdf2fd8916fd6acfa4232c633b9b1a5
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-rocklandtrivia.ini
@@ -0,0 +1,29 @@
+Name: Rockland Trivia
+Desc: Rock and Roll Trivia Door Game
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: Trivia
+exe: ROCKCFG.EXE
+
+[md5:542316eec8cbfc2e2f2c82e1e03784ae]
+ver = 2.5
+url = http://sunrisedoors.com/files/16Bit-RocklandTrivia2.5_Install.exe
+
+[prog:ROCKLAND]
+name = Rockland Trivia
+cmd = rockland.exe ROCKLAN%#.CFG /FD
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI |  XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-rocklandtrivia.js]
+prompt = false
+required = true
+
+[event:SRROCKMT]
+cmd = rocmaint.exe
+name = Sunrise Rockland Trivia Maintenance
+; all days
+days = 127
+time = 0:00
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-rocklandtrivia.js b/xtrn/3rdp-install/sunrise-rocklandtrivia.js
new file mode 100644
index 0000000000000000000000000000000000000000..b695370cf2c2d5f805b9459fe13a21849b681738
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-rocklandtrivia.js
@@ -0,0 +1,48 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+var conffilesrc = "ROCKLAND.CFG";
+var cfg_filename = gamedir + conffilesrc;
+
+file_backup(cfg_filename, 3);
+
+var lines = [];
+lines[0] = system.node_list[0].dir + 'door.sys';
+lines[1] = system.name;
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+lines[4] = "20"; // questions per day
+
+writeln("Creating " + cfg_filename);
+
+var file = new File(cfg_filename);
+if (!file.open("w")) {
+	writeln("Error " + file.error + " opening " + file.name + " for writing");
+	exit(1)
+}
+file.writeAll(lines);
+file.close();
+
+for (i in system.node_list) {
+	var nodenum = parseInt(i, 10) + 1;
+	lines[0] = system.node_list[i].dir + "\DOOR.SYS";
+	
+	writeln("Creating " + js.startup_dir + 'ROCKLAN' + nodenum + '.CFG');
+	
+	var file = new File(js.startup_dir + 'ROCKLAN' + nodenum + '.CFG');
+	if (!file.open("w")) {
+		writeln("Error " + file.error + " opening " + file.name + " for writing");
+		exit(1)
+	}
+	file.writeAll(lines);
+	file.close();
+}
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-skycop.ini b/xtrn/3rdp-install/sunrise-skycop.ini
new file mode 100644
index 0000000000000000000000000000000000000000..33db9d9ad93d09ad3de31d6841ad0b7d1fc365cd
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-skycop.ini
@@ -0,0 +1,22 @@
+Name: Sky Cop
+Desc: Air Traffic Control Simulator Game
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: Simulation
+exe: SKYCOP.EXE
+
+[md5:f7aa9863e150e4905d9df25551b421c3]
+ver = 2.2
+url = http://sunrisedoors.com/files/16Bit-SkyCop2.2_Install.exe
+
+[prog:SKYCOP]
+name = Sky Cop
+cmd = skycop.exe %f
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-skycop.js]
+prompt = false
+required = true
diff --git a/xtrn/3rdp-install/sunrise-skycop.js b/xtrn/3rdp-install/sunrise-skycop.js
new file mode 100644
index 0000000000000000000000000000000000000000..7c9419042eef035047e078f734e538f23f33edec
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-skycop.js
@@ -0,0 +1,46 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+var conffilesrc = "SKYCOP.CFG";
+
+var cfg_filename = gamedir + conffilesrc;
+
+if (!file_exists(cfg_filename)) {
+	writeln("Conf not found: " + cfg_filename);
+	exit(1);
+}
+
+var file = new File(cfg_filename);
+if (!file.open("r")) {
+	writeln("Error " + file.error + " opening " + file.name);
+	exit(1)
+}
+
+var lines = file.readAll();
+file.close();
+
+file_backup(cfg_filename, 3);
+
+lines[0] = system.name;
+lines[1] = system.operator;
+lines[4] = gamedir + "skycop.ans";
+lines[5] = gamedir + "skycop.asc";
+lines[6] = "8"; // game speed
+
+writeln("Creating " + cfg_filename);
+
+var file = new File(cfg_filename);
+if (!file.open("w")) {
+	writeln("Error " + file.error + " opening " + file.name + " for writing");
+	exit(1)
+}
+file.writeAll(lines);
+file.close();
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-stairway.ini b/xtrn/3rdp-install/sunrise-stairway.ini
new file mode 100644
index 0000000000000000000000000000000000000000..026adc18dd936266e2d4dbc36518ef36470cbf25
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-stairway.ini
@@ -0,0 +1,22 @@
+Name: Word Stairway
+Desc:  word game that will put your vocabulary skills to the test.
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: Word
+exe: STAIRWAY.EXE
+
+[md5:c7d51e71efac53932861af42e1c9e956]
+ver = 2.1
+url = http://sunrisedoors.com/files/16Bit-Stairway2.1_Install.exe
+
+[prog:STAIRWAY]
+name = Word Stairway
+cmd = stairway.exe STAIRWAY.CFG /FD
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-stairway.js]
+prompt = false
+required = true
diff --git a/xtrn/3rdp-install/sunrise-stairway.js b/xtrn/3rdp-install/sunrise-stairway.js
new file mode 100644
index 0000000000000000000000000000000000000000..2453ea5fe288740e40733a8a7911dae7419c3682
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-stairway.js
@@ -0,0 +1,50 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+var conffilesrc = "STAIRWAY.CFG";
+
+var cfg_filename = gamedir + conffilesrc;
+
+if (!file_exists(cfg_filename)) {
+	writeln("Conf not found: " + cfg_filename);
+	exit(1);
+}
+
+var file = new File(cfg_filename);
+if (!file.open("r")) {
+	writeln("Error " + file.error + " opening " + file.name);
+	exit(1)
+}
+
+var lines = file.readAll();
+file.close();
+
+file_backup(cfg_filename, 3);
+
+lines[0] = "%PCBDRIVE%%PCBDIR%\DOOR.SYS";
+lines[1] = system.name;
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+lines[10] = gamedir + "stair.asc";
+lines[11] = gamedir + "stair.ans";
+lines[12] = gamedir + "stairhof.asc";
+lines[13] = gamedir + "stairhof.ans";
+
+writeln("Creating " + cfg_filename);
+
+var file = new File(cfg_filename);
+if (!file.open("w")) {
+	writeln("Error " + file.error + " opening " + file.name + " for writing");
+	exit(1)
+}
+file.writeAll(lines);
+file.close();
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-states.ini b/xtrn/3rdp-install/sunrise-states.ini
new file mode 100644
index 0000000000000000000000000000000000000000..ebd66db2ab70545ba53e1c4e4eca64430e796046
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-states.ini
@@ -0,0 +1,22 @@
+Name: States
+Desc: Computer guesses the state you have chosen
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: Word,Educational
+exe: STATES.EXE
+
+[md5:08c2bfe17ed72d99fceefa6f6e96882c]
+ver = 3.1
+url = http://sunrisedoors.com/files/16Bit-States3.1_Install.exe
+
+[prog:SRSTATES]
+name = States
+cmd = states.exe STATES.CFG /FD
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-states.js]
+prompt = false
+required = true
diff --git a/xtrn/3rdp-install/sunrise-states.js b/xtrn/3rdp-install/sunrise-states.js
new file mode 100644
index 0000000000000000000000000000000000000000..0766dd918ab9dbd9ad1c3de2165fcbfbc7b6d6ab
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-states.js
@@ -0,0 +1,46 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+var conffilesrc = "STATES.CFG";
+
+var cfg_filename = gamedir + conffilesrc;
+
+if (!file_exists(cfg_filename)) {
+	writeln("Conf not found: " + cfg_filename);
+	exit(1);
+}
+
+var file = new File(cfg_filename);
+if (!file.open("r")) {
+	writeln("Error " + file.error + " opening " + file.name);
+	exit(1)
+}
+
+var lines = file.readAll();
+file.close();
+
+file_backup(cfg_filename, 3);
+
+lines[0] = "%PCBDRIVE%%PCBDIR%\DOOR.SYS";
+lines[1] = system.name;
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+
+writeln("Creating " + cfg_filename);
+
+var file = new File(cfg_filename);
+if (!file.open("w")) {
+	writeln("Error " + file.error + " opening " + file.name + " for writing");
+	exit(1)
+}
+file.writeAll(lines);
+file.close();
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-sweepstakes.ini b/xtrn/3rdp-install/sunrise-sweepstakes.ini
new file mode 100644
index 0000000000000000000000000000000000000000..fc53b0d1e2731a525f6a46c9d38d602e086d1abe
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-sweepstakes.ini
@@ -0,0 +1,22 @@
+Name: Sweepstakes Dice
+Desc: A fast-paced dice game in which you will be betting on the outcome of the roll of six dice.
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: Chance
+exe: SWEEPS.EXE
+
+[md5:aac2ac382b7c6217b3af101a1ccca290]
+ver = 2.6
+url = http://sunrisedoors.com/files/16Bit-Sweepstakes2.6_Install.exe
+
+[prog:SRSWEEP]
+name = Sweepstakes Dice
+cmd = sweeps.exe SWEEPS.CFG /FD
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-sweepstakes.js]
+prompt = false
+required = true
diff --git a/xtrn/3rdp-install/sunrise-sweepstakes.js b/xtrn/3rdp-install/sunrise-sweepstakes.js
new file mode 100644
index 0000000000000000000000000000000000000000..68adca881b7f15ca4c7ea56ba42a0dfd02e7f9c0
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-sweepstakes.js
@@ -0,0 +1,50 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+var conffilesrc = "SWEEPS.CFG";
+
+var cfg_filename = gamedir + conffilesrc;
+
+if (!file_exists(cfg_filename)) {
+	writeln("Conf not found: " + cfg_filename);
+	exit(1);
+}
+
+var file = new File(cfg_filename);
+if (!file.open("r")) {
+	writeln("Error " + file.error + " opening " + file.name);
+	exit(1)
+}
+
+var lines = file.readAll();
+file.close();
+
+file_backup(cfg_filename, 3);
+
+lines[0] = "%PCBDRIVE%%PCBDIR%\DOOR.SYS";
+lines[1] = system.name;
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+lines[7] = gamedir + "srswp.asc";
+lines[8] = gamedir + "srswp.ans";
+lines[9] = gamedir + "srswhof.asc";
+lines[10] = gamedir + "srswhof.ans";
+
+writeln("Creating " + cfg_filename);
+
+var file = new File(cfg_filename);
+if (!file.open("w")) {
+	writeln("Error " + file.error + " opening " + file.name + " for writing");
+	exit(1)
+}
+file.writeAll(lines);
+file.close();
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-timetravel.ini b/xtrn/3rdp-install/sunrise-timetravel.ini
new file mode 100644
index 0000000000000000000000000000000000000000..4986999f5004de89600906652bc2fa5d0b23f404
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-timetravel.ini
@@ -0,0 +1,22 @@
+Name: Time Travel
+Desc: The classic RPG just got even better.
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: RPG
+exe: TIME23.EXE
+
+[md5:2be2cf6d16e1bb59fe1162b746abe705]
+ver = 2.3
+url = http://sunrisedoors.com/files/16Bit-TimeTravel2.3_Install.exe
+
+[prog:SRTIME]
+name = Time Travel
+cmd = ttravel.exe TTRAVEL%#.CFG /FD
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-timetravel.js]
+prompt = false
+required = true
diff --git a/xtrn/3rdp-install/sunrise-timetravel.js b/xtrn/3rdp-install/sunrise-timetravel.js
new file mode 100644
index 0000000000000000000000000000000000000000..0018f6a4b1fb01750aed14673a7f989c11602006
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-timetravel.js
@@ -0,0 +1,55 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+var conffilesrc = "TTRAVEL.CFG";
+var cfg_filename = gamedir + conffilesrc;
+
+file_backup(cfg_filename, 3);
+
+var file = new File(cfg_filename);
+if (!file.open("r")) {
+	writeln("Error " + file.error + " opening " + file.name);
+	exit(1)
+}
+var lines = file.readAll();
+file.close();
+
+lines[0] = system.node_list[0].dir + 'door.sys';
+lines[1] = system.name;
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+lines[4] = gamedir;
+
+writeln("Creating " + cfg_filename);
+
+var file = new File(cfg_filename);
+if (!file.open("w")) {
+	writeln("Error " + file.error + " opening " + file.name + " for writing");
+	exit(1)
+}
+file.writeAll(lines);
+file.close();
+
+for (i in system.node_list) {
+	var nodenum = parseInt(i, 10) + 1;
+	lines[0] = system.node_list[i].dir + "\DOOR.SYS";
+	
+	writeln("Creating " + js.startup_dir + 'TTRAVEL' + nodenum + '.CFG');
+	
+	var file = new File(js.startup_dir + 'TTRAVEL' + nodenum + '.CFG');
+	if (!file.open("w")) {
+		writeln("Error " + file.error + " opening " + file.name + " for writing");
+		exit(1)
+	}
+	file.writeAll(lines);
+	file.close();
+}
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-triangle.ini b/xtrn/3rdp-install/sunrise-triangle.ini
new file mode 100644
index 0000000000000000000000000000000000000000..e90414616364611f6fb233f0c407cf1b75ea9069
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-triangle.ini
@@ -0,0 +1,22 @@
+Name: Triangle Solitaire
+Desc: Remove the cards in pairs whose total value is equal to 13.
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: Board, Cards
+exe: TRIANGLE.EXE
+
+[md5:c1ae6aa49cb8e05376ef909372f00503]
+ver = 4.5
+url = http://sunrisedoors.com/files/16Bit-TriangleSolitaire4.5_Install.exe
+
+[prog:SRTRI]
+name = Triangle Solitaire
+cmd = triangle.exe TRIANGLE.CFG /FD
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-trianglesolitaire.js]
+prompt = false
+required = true
diff --git a/xtrn/3rdp-install/sunrise-trianglesolitaire.js b/xtrn/3rdp-install/sunrise-trianglesolitaire.js
new file mode 100644
index 0000000000000000000000000000000000000000..74622d29913b22034e89d2be7eb01135fd85148e
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-trianglesolitaire.js
@@ -0,0 +1,50 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+var conffilesrc = "TRIANGLE.CFG";
+
+var cfg_filename = gamedir + conffilesrc;
+
+if (!file_exists(cfg_filename)) {
+	writeln("Conf not found: " + cfg_filename);
+	exit(1);
+}
+
+var file = new File(cfg_filename);
+if (!file.open("r")) {
+	writeln("Error " + file.error + " opening " + file.name);
+	exit(1)
+}
+
+var lines = file.readAll();
+file.close();
+
+file_backup(cfg_filename, 3);
+
+lines[0] = "%PCBDRIVE%%PCBDIR%\DOOR.SYS";
+lines[1] = system.name;
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+lines[7] = gamedir + "srtri.asc";
+lines[8] = gamedir + "srtri.ans";
+lines[9] = gamedir + "srtrihof.asc";
+lines[10] = gamedir + "srtrihof.ans";
+
+writeln("Creating " + cfg_filename);
+
+var file = new File(cfg_filename);
+if (!file.open("w")) {
+	writeln("Error " + file.error + " opening " + file.name + " for writing");
+	exit(1)
+}
+file.writeAll(lines);
+file.close();
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-tripleyahtzee.ini b/xtrn/3rdp-install/sunrise-tripleyahtzee.ini
new file mode 100644
index 0000000000000000000000000000000000000000..0d982cc5142ac3021fcf55a04d0ca8cfc9098a78
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-tripleyahtzee.ini
@@ -0,0 +1,22 @@
+Name: Triple Yahtzee
+Desc: GREAT Dice game. Very ADDICTIVE, popular and challenging
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: Board
+exe: YAHTZEE.EXE
+
+[md5:97dd32427e8990b1177ece8ca40e4557]
+ver = 1.7
+url = http://sunrisedoors.com/files/16Bit-Yahtzee1.7_Install.exe
+
+[prog:SRYAHTZ]
+name = Triple Yahtzee
+cmd = yahtzee.exe YAHTZEE.CFG /FD
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-tripleyahtzee.js]
+prompt = false
+required = true
diff --git a/xtrn/3rdp-install/sunrise-tripleyahtzee.js b/xtrn/3rdp-install/sunrise-tripleyahtzee.js
new file mode 100644
index 0000000000000000000000000000000000000000..1d93bd5fa0dbdb3969abdf6c460fa83c8ecd2c93
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-tripleyahtzee.js
@@ -0,0 +1,50 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+var conffilesrc = "YAHTZEE.CFG";
+
+var cfg_filename = gamedir + conffilesrc;
+
+if (!file_exists(cfg_filename)) {
+	writeln("Conf not found: " + cfg_filename);
+	exit(1);
+}
+
+var file = new File(cfg_filename);
+if (!file.open("r")) {
+	writeln("Error " + file.error + " opening " + file.name);
+	exit(1)
+}
+
+var lines = file.readAll();
+file.close();
+
+file_backup(cfg_filename, 3);
+
+lines[0] = "%PCBDRIVE%%PCBDIR%\DOOR.SYS";
+lines[1] = system.name;
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+lines[8] = gamedir + "sryah.asc";
+lines[9] = gamedir + "sryah.ans";
+lines[10] = gamedir + "sryahhof.asc";
+lines[11] = gamedir + "sryahhof.ans";
+
+writeln("Creating " + cfg_filename);
+
+var file = new File(cfg_filename);
+if (!file.open("w")) {
+	writeln("Error " + file.error + " opening " + file.name + " for writing");
+	exit(1)
+}
+file.writeAll(lines);
+file.close();
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-trivia.ini b/xtrn/3rdp-install/sunrise-trivia.ini
new file mode 100644
index 0000000000000000000000000000000000000000..1092f4dbe8f8586147b0db17e9d73ecc77c5d167
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-trivia.ini
@@ -0,0 +1,29 @@
+Name: Trivia
+Desc: Sunrise Trivia Door
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: Trivia
+exe: TRIVIA.EXE
+
+[md5:e0f934fe9317117abbe69eb4bb5ee2a2]
+ver = 2.7
+url = http://sunrisedoors.com/files/16Bit-Trivia2.7_Install.exe
+
+[prog:SRTRIVIA]
+name = Trivia
+cmd = trivia.exe TRIVIA.CFG /FD
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-trivia.js]
+prompt = false
+required = true
+
+[event:SRTRVMNT]
+cmd = trivmant.exe trivia.cfg /EVENT=Y
+name = Sunrise Trivia Maintenance
+; all days
+days = 127
+time = 0:00
diff --git a/xtrn/3rdp-install/sunrise-trivia.js b/xtrn/3rdp-install/sunrise-trivia.js
new file mode 100644
index 0000000000000000000000000000000000000000..1ad36d91210587af3f5219bcfe0010d952545ded
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-trivia.js
@@ -0,0 +1,49 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+var conffilesrc = "TRIVIA.CFG";
+
+var cfg_filename = gamedir + conffilesrc;
+
+if (!file_exists(cfg_filename)) {
+	writeln("Conf not found: " + cfg_filename);
+	exit(1);
+}
+
+var file = new File(cfg_filename);
+if (!file.open("r")) {
+	writeln("Error " + file.error + " opening " + file.name);
+	exit(1)
+}
+
+var lines = file.readAll();
+file.close();
+
+file_backup(cfg_filename, 3);
+
+lines[0] = "%PCBDRIVE%%PCBDIR%\DOOR.SYS";
+lines[1] = system.name;
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+lines[8] = gamedir + "srtrivia.asc";
+lines[9] = gamedir + "srtrivia.ans";
+lines[11] = "1"; // do not do adopt-a-door
+
+writeln("Creating " + cfg_filename);
+
+var file = new File(cfg_filename);
+if (!file.open("w")) {
+	writeln("Error " + file.error + " opening " + file.name + " for writing");
+	exit(1)
+}
+file.writeAll(lines);
+file.close();
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-virtualescape.ini b/xtrn/3rdp-install/sunrise-virtualescape.ini
new file mode 100644
index 0000000000000000000000000000000000000000..a4c0d7555b765768a9b7e743e0354c39374a04ed
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-virtualescape.ini
@@ -0,0 +1,22 @@
+Name: Virtual Escape
+Desc:  Escape the maze and avoid the appearing robots.
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: Arcade
+exe: VIRTUAL.EXE
+
+[md5:6b8b2c62be730796c7c7cefe9975bcbc]
+ver = 2.3
+url = http://sunrisedoors.com/files/16Bit-VirtualEscape2.3_Install.exe
+
+[prog:VIRTESC]
+name = Virtual Escape
+cmd = virtual.exe VIRTUAL.CFG /FD
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-virtualescape.js]
+prompt = false
+required = true
diff --git a/xtrn/3rdp-install/sunrise-virtualescape.js b/xtrn/3rdp-install/sunrise-virtualescape.js
new file mode 100644
index 0000000000000000000000000000000000000000..5caf899f2f3a3665639db0512d88d8bd77170d6b
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-virtualescape.js
@@ -0,0 +1,34 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+var conffilesrc = "VIRTUAL.CFG";
+
+var cfg_filename = gamedir + conffilesrc;
+
+file_backup(cfg_filename, 3);
+
+var lines = [];
+
+lines[0] = "%PCBDRIVE%%PCBDIR%\DOOR.SYS";
+lines[1] = system.name;
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+
+writeln("Creating " + cfg_filename);
+
+var file = new File(cfg_filename);
+if (!file.open("w")) {
+	writeln("Error " + file.error + " opening " + file.name + " for writing");
+	exit(1)
+}
+file.writeAll(lines);
+file.close();
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-wheeloffortune.ini b/xtrn/3rdp-install/sunrise-wheeloffortune.ini
new file mode 100644
index 0000000000000000000000000000000000000000..e8e9994a161373fef81147e307433cd921b999aa
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-wheeloffortune.ini
@@ -0,0 +1,29 @@
+Name: Wheel of Fortune (Sunrise)
+Desc: in this game you must unscramble the words presented to you
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: Word
+exe: WHEEL.EXE
+
+[md5:a8a6067598c78336cc80e8d73b22d2e2]
+ver = 6.7
+url = http://sunrisedoors.com/files/16BitI-WheelOfFortune6.7_Install.exe
+
+[prog:SRWHEEL]
+name = Wheel of Fortune (Sunrise)
+cmd = wheel.exe WHEEL.CFG /FD
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-wheeloffortune.js]
+prompt = false
+required = true
+
+[event:SRTWHMNT]
+cmd = wofmaint.exe WHEEL.CFG /EVENT
+name = Sunrise Wheel of Fortune Maintenance
+; all days
+days = 127
+time = 0:00
diff --git a/xtrn/3rdp-install/sunrise-wheeloffortune.js b/xtrn/3rdp-install/sunrise-wheeloffortune.js
new file mode 100644
index 0000000000000000000000000000000000000000..d9e0ba8868ba00cb0935968233ac073f47409c36
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-wheeloffortune.js
@@ -0,0 +1,46 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+var conffilesrc = "WHEEL.CFG";
+
+var cfg_filename = gamedir + conffilesrc;
+
+file_backup(cfg_filename, 3);
+
+var file = new File(cfg_filename);
+if (!file.open("r")) {
+	writeln("Error " + file.error + " opening " + file.name);
+	exit(1)
+}
+
+var lines = file.readAll();
+file.close();
+
+lines[0] = "%PCBDRIVE%%PCBDIR%\DOOR.SYS";
+lines[1] = system.name;
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+lines[10] = gamedir + "srwh.asc";
+lines[11] = gamedir + "srwh.ans";
+lines[12] = gamedir + "srwhhof.asc";
+lines[13] = gamedir + "srwhhof.ans";
+lines[14] = "1"; // no adopt a door
+
+writeln("Creating " + cfg_filename);
+
+var file = new File(cfg_filename);
+if (!file.open("w")) {
+	writeln("Error " + file.error + " opening " + file.name + " for writing");
+	exit(1)
+}
+file.writeAll(lines);
+file.close();
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-wordsearch.ini b/xtrn/3rdp-install/sunrise-wordsearch.ini
new file mode 100644
index 0000000000000000000000000000000000000000..e5d131dfb5b1e44722e3fd90e41683cdd740acdd
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-wordsearch.ini
@@ -0,0 +1,22 @@
+Name: Word Search (Sunrise)
+Desc: You choose a word from the word list and find it in the letter grid.
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: Word
+exe: SEARCH.EXE
+
+[md5:0d1446d314e14944c72919cd4706f8ae]
+ver = 4.4
+url = http://sunrisedoors.com/files/16Bit-WordSearch4.4_Install.exe
+
+[prog:SRWORDSE]
+name = Word Search (Sunrise)
+cmd = search.exe SEARCH.CFG /FD
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-wordsearch.js]
+prompt = false
+required = true
diff --git a/xtrn/3rdp-install/sunrise-wordsearch.js b/xtrn/3rdp-install/sunrise-wordsearch.js
new file mode 100644
index 0000000000000000000000000000000000000000..708e36b195bb8a006656c746430b5208e81176cf
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-wordsearch.js
@@ -0,0 +1,46 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+var conffilesrc = "SEARCH.CFG";
+
+var cfg_filename = gamedir + conffilesrc;
+
+file_backup(cfg_filename, 3);
+
+var file = new File(cfg_filename);
+if (!file.open("r")) {
+	writeln("Error " + file.error + " opening " + file.name);
+	exit(1)
+}
+
+var lines = file.readAll();
+file.close();
+
+lines[0] = "%PCBDRIVE%%PCBDIR%\DOOR.SYS";
+lines[1] = system.name;
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+lines[7] = gamedir + "srwds.asc";
+lines[8] = gamedir + "srwds.ans";
+lines[9] = gamedir + "srwdshof.asc";
+lines[10] = gamedir + "srwdshof.ans";
+lines[11] = "1"; // no adopt a door
+
+writeln("Creating " + cfg_filename);
+
+var file = new File(cfg_filename);
+if (!file.open("w")) {
+	writeln("Error " + file.error + " opening " + file.name + " for writing");
+	exit(1)
+}
+file.writeAll(lines);
+file.close();
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-wordshuffle.ini b/xtrn/3rdp-install/sunrise-wordshuffle.ini
new file mode 100644
index 0000000000000000000000000000000000000000..1fd0b5509c13836c477a2128f17f21e30f44f2fe
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-wordshuffle.ini
@@ -0,0 +1,29 @@
+Name: Word Shuffle (Sunrise)
+Desc: Unscramble the words presented to you and earn points in the process.
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: Word
+exe: SHUFFLE.EXE
+
+[md5:c8cce70d1c431c60140968e42b03404f]
+ver = 3.4
+url = http://sunrisedoors.com/files/16Bit-WordShuffle3.4_Install.exe
+
+[prog:SRSHUFF]
+name = Word Shuffle (Sunrise)
+cmd = shuffle.exe SHUFFLE.CFG /FD
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-wordshuffle.js]
+prompt = false
+required = true
+
+;[event:SRSHUFMNT]
+;cmd = shufword.exe SHUFFLE.CFG /E
+;name = Sunrise Word Shuffle Maintenance
+;; all days
+;days = 127
+;time = 0:00
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-wordshuffle.js b/xtrn/3rdp-install/sunrise-wordshuffle.js
new file mode 100644
index 0000000000000000000000000000000000000000..3148546880505fec8afd56d736cc52eb258c79e2
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-wordshuffle.js
@@ -0,0 +1,44 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+var conffilesrc = "SHUFFLE.CFG";
+
+var cfg_filename = gamedir + conffilesrc;
+
+file_backup(cfg_filename, 3);
+
+var file = new File(cfg_filename);
+if (!file.open("r")) {
+	writeln("Error " + file.error + " opening " + file.name);
+	exit(1)
+}
+
+var lines = file.readAll();
+file.close();
+
+lines[0] = "%PCBDRIVE%%PCBDIR%\DOOR.SYS";
+lines[1] = system.name;
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+lines[8] = gamedir + "srwdshuf.asc";
+lines[9] = gamedir + "srwdshuf.ans";
+lines[11] = "1"; // no adopt-a-door
+
+writeln("Creating " + cfg_filename);
+
+var file = new File(cfg_filename);
+if (!file.open("w")) {
+	writeln("Error " + file.error + " opening " + file.name + " for writing");
+	exit(1)
+}
+file.writeAll(lines);
+file.close();
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-wordwar.ini b/xtrn/3rdp-install/sunrise-wordwar.ini
new file mode 100644
index 0000000000000000000000000000000000000000..aafb46cedd9853ca563e493bf21926e9f21bea50
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-wordwar.ini
@@ -0,0 +1,22 @@
+Name: Word War
+Desc: Create as many words as you can from the 15 randomly chosen letters
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: Word
+exe: WORDWAR.EXE
+
+[md5:5b2fd6e609fc15a71d0d52d4aae8f585]
+ver = 2.3
+url = http://sunrisedoors.com/files/16Bit-WordWar2.3_Install.exe
+
+[prog:WORDWAR]
+name = Word War
+cmd = wordwar.exe WORDWAR.CFG /FD
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-wordwar.js]
+prompt = false
+required = true
diff --git a/xtrn/3rdp-install/sunrise-wordwar.js b/xtrn/3rdp-install/sunrise-wordwar.js
new file mode 100644
index 0000000000000000000000000000000000000000..f39fb33ab023f2dd3e921e130aec31ea594571e7
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-wordwar.js
@@ -0,0 +1,45 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+var conffilesrc = "WORDWAR.CFG";
+
+var cfg_filename = gamedir + conffilesrc;
+
+file_backup(cfg_filename, 3);
+
+var file = new File(cfg_filename);
+if (!file.open("r")) {
+	writeln("Error " + file.error + " opening " + file.name);
+	exit(1)
+}
+
+var lines = file.readAll();
+file.close();
+
+lines[0] = "%PCBDRIVE%%PCBDIR%\DOOR.SYS";
+lines[1] = system.name;
+var op = system.operator.split(" ", 2);
+lines[2] = op[0];
+lines[3] = op[1];
+lines[11] = gamedir + "wordwar.asc";
+lines[12] = gamedir + "wordwar.ans";
+lines[13] = gamedir + "wordwarh.asc";
+lines[14] = gamedir + "wordwarh.ans";
+
+writeln("Creating " + cfg_filename);
+
+var file = new File(cfg_filename);
+if (!file.open("w")) {
+	writeln("Error " + file.error + " opening " + file.name + " for writing");
+	exit(1)
+}
+file.writeAll(lines);
+file.close();
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file
diff --git a/xtrn/3rdp-install/sunrise-wordwarp.ini b/xtrn/3rdp-install/sunrise-wordwarp.ini
new file mode 100644
index 0000000000000000000000000000000000000000..48f6cd7d1b0d37dd251f63430e9d8af6af858797
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-wordwarp.ini
@@ -0,0 +1,22 @@
+Name: Word Warp
+Desc: Create 25 words from another eight letter word within a specified time limit
+By:   Al Lawrence, Sunrise Door Software
+Cats: Games
+Subs: Word
+exe: WARPIBBS.EXE
+
+[md5:65ab7f5dea1efe4d31e2b6d30dc7c36b]
+ver = 3.1
+url = http://sunrisedoors.com/files/16Bit-WordWarp3.1_Install.exe
+
+[prog:WORDWARP]
+name = Word Warp
+cmd = wwarp.exe %f
+ars = DOS
+execution_ars = NOT GUEST
+settings = XTRN_ANSI | XTRN_MULTIUSER | XTRN_SH
+type = XTRN_GAP
+
+[exec:../3rdp-install/sunrise-wordwarp.js]
+prompt = false
+required = true
diff --git a/xtrn/3rdp-install/sunrise-wordwarp.js b/xtrn/3rdp-install/sunrise-wordwarp.js
new file mode 100644
index 0000000000000000000000000000000000000000..3a4d70b44caf84d7c88f34a0b4e0e4a388244524
--- /dev/null
+++ b/xtrn/3rdp-install/sunrise-wordwarp.js
@@ -0,0 +1,40 @@
+"use strict";
+
+writeln("Generating config files...");
+
+var i;
+
+var gamedir = fullpath(js.startup_dir);
+var conffilesrc = "WWARP.CFG";
+
+var cfg_filename = gamedir + conffilesrc;
+
+file_backup(cfg_filename, 3);
+
+var file = new File(cfg_filename);
+if (!file.open("r")) {
+	writeln("Error " + file.error + " opening " + file.name);
+	exit(1)
+}
+
+var lines = file.readAll();
+file.close();
+
+lines[0] = system.name;
+lines[1] = system.operator;
+lines[3] = gamedir + "wwarp.ans";
+lines[4] = gamedir + "wwarp.asc";
+
+writeln("Creating " + cfg_filename);
+
+var file = new File(cfg_filename);
+if (!file.open("w")) {
+	writeln("Error " + file.error + " opening " + file.name + " for writing");
+	exit(1)
+}
+file.writeAll(lines);
+file.close();
+
+writeln("Config generation complete");
+
+exit(0);
\ No newline at end of file