From 8e776ee9b7de59328049dc101513cb61ef61f616 Mon Sep 17 00:00:00 2001
From: Michael Long <mlong@mlong.us>
Date: Mon, 25 Jan 2021 21:52:08 -0500
Subject: [PATCH] dreamware and sunrise

---
 xtrn/3rdp-install/dreamware-chomper.ini       | 29 ++++++++++
 xtrn/3rdp-install/dreamware-dreamtrack.ini    | 29 ++++++++++
 xtrn/3rdp-install/dreamware-jot.ini           | 29 ++++++++++
 xtrn/3rdp-install/dreamware-lightsout.ini     | 29 ++++++++++
 xtrn/3rdp-install/dreamware-potofgold.ini     | 29 ++++++++++
 xtrn/3rdp-install/sunrise-3pairpok.ini        | 22 ++++++++
 xtrn/3rdp-install/sunrise-3pairpoker.js       | 51 +++++++++++++++++
 xtrn/3rdp-install/sunrise-4corners.ini        | 22 ++++++++
 xtrn/3rdp-install/sunrise-4corners.js         | 49 +++++++++++++++++
 xtrn/3rdp-install/sunrise-aceydeucey.ini      | 22 ++++++++
 xtrn/3rdp-install/sunrise-aceydeucey.js       | 54 ++++++++++++++++++
 xtrn/3rdp-install/sunrise-atlantis.ini        | 22 ++++++++
 xtrn/3rdp-install/sunrise-atlantis.js         | 48 ++++++++++++++++
 xtrn/3rdp-install/sunrise-baseballdice.ini    | 22 ++++++++
 xtrn/3rdp-install/sunrise-baseballdice.js     | 53 ++++++++++++++++++
 xtrn/3rdp-install/sunrise-betsyross.ini       | 22 ++++++++
 xtrn/3rdp-install/sunrise-betsyross.js        | 52 ++++++++++++++++++
 xtrn/3rdp-install/sunrise-blackjack.ini       | 22 ++++++++
 xtrn/3rdp-install/sunrise-blackjack.js        | 53 ++++++++++++++++++
 xtrn/3rdp-install/sunrise-boxdice.ini         | 22 ++++++++
 xtrn/3rdp-install/sunrise-boxdice.js          | 52 ++++++++++++++++++
 xtrn/3rdp-install/sunrise-boxpoker.ini        | 22 ++++++++
 xtrn/3rdp-install/sunrise-boxpoker.js         | 52 ++++++++++++++++++
 xtrn/3rdp-install/sunrise-chainreaction.ini   | 22 ++++++++
 xtrn/3rdp-install/sunrise-chainreaction.js    | 42 ++++++++++++++
 xtrn/3rdp-install/sunrise-colonies.ini        | 35 ++++++++++++
 xtrn/3rdp-install/sunrise-colonies.js         | 37 +++++++++++++
 xtrn/3rdp-install/sunrise-concentration.ini   | 22 ++++++++
 xtrn/3rdp-install/sunrise-concentration.js    | 53 ++++++++++++++++++
 xtrn/3rdp-install/sunrise-cribbage.ini        | 22 ++++++++
 xtrn/3rdp-install/sunrise-cribbage.js         | 51 +++++++++++++++++
 xtrn/3rdp-install/sunrise-crypto.ini          | 29 ++++++++++
 xtrn/3rdp-install/sunrise-crypto.js           | 48 ++++++++++++++++
 xtrn/3rdp-install/sunrise-dominoes.ini        | 22 ++++++++
 xtrn/3rdp-install/sunrise-dominoes.js         | 49 +++++++++++++++++
 xtrn/3rdp-install/sunrise-ganglandwars.ini    | 29 ++++++++++
 xtrn/3rdp-install/sunrise-ganglandwars.js     | 41 ++++++++++++++
 xtrn/3rdp-install/sunrise-groandice.ini       | 22 ++++++++
 xtrn/3rdp-install/sunrise-groandice.js        | 52 ++++++++++++++++++
 xtrn/3rdp-install/sunrise-hackarama.ini       | 22 ++++++++
 xtrn/3rdp-install/sunrise-hackarama.js        | 38 +++++++++++++
 xtrn/3rdp-install/sunrise-hexxwars.ini        | 29 ++++++++++
 xtrn/3rdp-install/sunrise-hexxwars.js         | 41 ++++++++++++++
 xtrn/3rdp-install/sunrise-hilo.ini            | 22 ++++++++
 xtrn/3rdp-install/sunrise-hilo.js             | 51 +++++++++++++++++
 xtrn/3rdp-install/sunrise-hiroll.ini          | 22 ++++++++
 xtrn/3rdp-install/sunrise-hirolldice.js       | 51 +++++++++++++++++
 xtrn/3rdp-install/sunrise-keno.ini            | 22 ++++++++
 xtrn/3rdp-install/sunrise-keno.js             | 53 ++++++++++++++++++
 xtrn/3rdp-install/sunrise-laddersdice.ini     | 22 ++++++++
 xtrn/3rdp-install/sunrise-laddersdice.js      | 50 +++++++++++++++++
 xtrn/3rdp-install/sunrise-legendsofole.ini    | 32 +++++++++++
 xtrn/3rdp-install/sunrise-legendsofole.js     | 47 ++++++++++++++++
 xtrn/3rdp-install/sunrise-lettermatch.ini     | 22 ++++++++
 xtrn/3rdp-install/sunrise-lettermatch.js      | 52 ++++++++++++++++++
 xtrn/3rdp-install/sunrise-lostinspace.ini     | 29 ++++++++++
 xtrn/3rdp-install/sunrise-lostinspace.js      | 37 +++++++++++++
 xtrn/3rdp-install/sunrise-lottomania.ini      | 22 ++++++++
 xtrn/3rdp-install/sunrise-lottomania.js       | 38 +++++++++++++
 xtrn/3rdp-install/sunrise-montecarlo.ini      | 22 ++++++++
 xtrn/3rdp-install/sunrise-montecarlo.js       | 52 ++++++++++++++++++
 xtrn/3rdp-install/sunrise-overunder.ini       | 22 ++++++++
 xtrn/3rdp-install/sunrise-overunder.js        | 52 ++++++++++++++++++
 xtrn/3rdp-install/sunrise-pentasim.ini        | 29 ++++++++++
 xtrn/3rdp-install/sunrise-pentasim.js         | 37 +++++++++++++
 xtrn/3rdp-install/sunrise-questfornora.ini    | 29 ++++++++++
 xtrn/3rdp-install/sunrise-questfornora.js     | 38 +++++++++++++
 xtrn/3rdp-install/sunrise-rescue.ini          | 22 ++++++++
 xtrn/3rdp-install/sunrise-rescue.js           | 53 ++++++++++++++++++
 xtrn/3rdp-install/sunrise-rockinradio.ini     | 22 ++++++++
 xtrn/3rdp-install/sunrise-rockinradio.js      | 36 ++++++++++++
 xtrn/3rdp-install/sunrise-rocklandtrivia.ini  | 29 ++++++++++
 xtrn/3rdp-install/sunrise-rocklandtrivia.js   | 48 ++++++++++++++++
 xtrn/3rdp-install/sunrise-skycop.ini          | 22 ++++++++
 xtrn/3rdp-install/sunrise-skycop.js           | 46 ++++++++++++++++
 xtrn/3rdp-install/sunrise-stairway.ini        | 22 ++++++++
 xtrn/3rdp-install/sunrise-stairway.js         | 50 +++++++++++++++++
 xtrn/3rdp-install/sunrise-states.ini          | 22 ++++++++
 xtrn/3rdp-install/sunrise-states.js           | 46 ++++++++++++++++
 xtrn/3rdp-install/sunrise-sweepstakes.ini     | 22 ++++++++
 xtrn/3rdp-install/sunrise-sweepstakes.js      | 50 +++++++++++++++++
 xtrn/3rdp-install/sunrise-timetravel.ini      | 22 ++++++++
 xtrn/3rdp-install/sunrise-timetravel.js       | 55 +++++++++++++++++++
 xtrn/3rdp-install/sunrise-triangle.ini        | 22 ++++++++
 .../3rdp-install/sunrise-trianglesolitaire.js | 50 +++++++++++++++++
 xtrn/3rdp-install/sunrise-tripleyahtzee.ini   | 22 ++++++++
 xtrn/3rdp-install/sunrise-tripleyahtzee.js    | 50 +++++++++++++++++
 xtrn/3rdp-install/sunrise-trivia.ini          | 29 ++++++++++
 xtrn/3rdp-install/sunrise-trivia.js           | 49 +++++++++++++++++
 xtrn/3rdp-install/sunrise-virtualescape.ini   | 22 ++++++++
 xtrn/3rdp-install/sunrise-virtualescape.js    | 34 ++++++++++++
 xtrn/3rdp-install/sunrise-wheeloffortune.ini  | 29 ++++++++++
 xtrn/3rdp-install/sunrise-wheeloffortune.js   | 46 ++++++++++++++++
 xtrn/3rdp-install/sunrise-wordsearch.ini      | 22 ++++++++
 xtrn/3rdp-install/sunrise-wordsearch.js       | 46 ++++++++++++++++
 xtrn/3rdp-install/sunrise-wordshuffle.ini     | 29 ++++++++++
 xtrn/3rdp-install/sunrise-wordshuffle.js      | 44 +++++++++++++++
 xtrn/3rdp-install/sunrise-wordwar.ini         | 22 ++++++++
 xtrn/3rdp-install/sunrise-wordwar.js          | 45 +++++++++++++++
 xtrn/3rdp-install/sunrise-wordwarp.ini        | 22 ++++++++
 xtrn/3rdp-install/sunrise-wordwarp.js         | 40 ++++++++++++++
 101 files changed, 3556 insertions(+)
 create mode 100644 xtrn/3rdp-install/dreamware-chomper.ini
 create mode 100644 xtrn/3rdp-install/dreamware-dreamtrack.ini
 create mode 100644 xtrn/3rdp-install/dreamware-jot.ini
 create mode 100644 xtrn/3rdp-install/dreamware-lightsout.ini
 create mode 100644 xtrn/3rdp-install/dreamware-potofgold.ini
 create mode 100644 xtrn/3rdp-install/sunrise-3pairpok.ini
 create mode 100644 xtrn/3rdp-install/sunrise-3pairpoker.js
 create mode 100644 xtrn/3rdp-install/sunrise-4corners.ini
 create mode 100644 xtrn/3rdp-install/sunrise-4corners.js
 create mode 100644 xtrn/3rdp-install/sunrise-aceydeucey.ini
 create mode 100644 xtrn/3rdp-install/sunrise-aceydeucey.js
 create mode 100644 xtrn/3rdp-install/sunrise-atlantis.ini
 create mode 100644 xtrn/3rdp-install/sunrise-atlantis.js
 create mode 100644 xtrn/3rdp-install/sunrise-baseballdice.ini
 create mode 100644 xtrn/3rdp-install/sunrise-baseballdice.js
 create mode 100644 xtrn/3rdp-install/sunrise-betsyross.ini
 create mode 100644 xtrn/3rdp-install/sunrise-betsyross.js
 create mode 100644 xtrn/3rdp-install/sunrise-blackjack.ini
 create mode 100644 xtrn/3rdp-install/sunrise-blackjack.js
 create mode 100644 xtrn/3rdp-install/sunrise-boxdice.ini
 create mode 100644 xtrn/3rdp-install/sunrise-boxdice.js
 create mode 100644 xtrn/3rdp-install/sunrise-boxpoker.ini
 create mode 100644 xtrn/3rdp-install/sunrise-boxpoker.js
 create mode 100644 xtrn/3rdp-install/sunrise-chainreaction.ini
 create mode 100644 xtrn/3rdp-install/sunrise-chainreaction.js
 create mode 100644 xtrn/3rdp-install/sunrise-colonies.ini
 create mode 100644 xtrn/3rdp-install/sunrise-colonies.js
 create mode 100644 xtrn/3rdp-install/sunrise-concentration.ini
 create mode 100644 xtrn/3rdp-install/sunrise-concentration.js
 create mode 100644 xtrn/3rdp-install/sunrise-cribbage.ini
 create mode 100644 xtrn/3rdp-install/sunrise-cribbage.js
 create mode 100644 xtrn/3rdp-install/sunrise-crypto.ini
 create mode 100644 xtrn/3rdp-install/sunrise-crypto.js
 create mode 100644 xtrn/3rdp-install/sunrise-dominoes.ini
 create mode 100644 xtrn/3rdp-install/sunrise-dominoes.js
 create mode 100644 xtrn/3rdp-install/sunrise-ganglandwars.ini
 create mode 100644 xtrn/3rdp-install/sunrise-ganglandwars.js
 create mode 100644 xtrn/3rdp-install/sunrise-groandice.ini
 create mode 100644 xtrn/3rdp-install/sunrise-groandice.js
 create mode 100644 xtrn/3rdp-install/sunrise-hackarama.ini
 create mode 100644 xtrn/3rdp-install/sunrise-hackarama.js
 create mode 100644 xtrn/3rdp-install/sunrise-hexxwars.ini
 create mode 100644 xtrn/3rdp-install/sunrise-hexxwars.js
 create mode 100644 xtrn/3rdp-install/sunrise-hilo.ini
 create mode 100644 xtrn/3rdp-install/sunrise-hilo.js
 create mode 100644 xtrn/3rdp-install/sunrise-hiroll.ini
 create mode 100644 xtrn/3rdp-install/sunrise-hirolldice.js
 create mode 100644 xtrn/3rdp-install/sunrise-keno.ini
 create mode 100644 xtrn/3rdp-install/sunrise-keno.js
 create mode 100644 xtrn/3rdp-install/sunrise-laddersdice.ini
 create mode 100644 xtrn/3rdp-install/sunrise-laddersdice.js
 create mode 100644 xtrn/3rdp-install/sunrise-legendsofole.ini
 create mode 100644 xtrn/3rdp-install/sunrise-legendsofole.js
 create mode 100644 xtrn/3rdp-install/sunrise-lettermatch.ini
 create mode 100644 xtrn/3rdp-install/sunrise-lettermatch.js
 create mode 100644 xtrn/3rdp-install/sunrise-lostinspace.ini
 create mode 100644 xtrn/3rdp-install/sunrise-lostinspace.js
 create mode 100644 xtrn/3rdp-install/sunrise-lottomania.ini
 create mode 100644 xtrn/3rdp-install/sunrise-lottomania.js
 create mode 100644 xtrn/3rdp-install/sunrise-montecarlo.ini
 create mode 100644 xtrn/3rdp-install/sunrise-montecarlo.js
 create mode 100644 xtrn/3rdp-install/sunrise-overunder.ini
 create mode 100644 xtrn/3rdp-install/sunrise-overunder.js
 create mode 100644 xtrn/3rdp-install/sunrise-pentasim.ini
 create mode 100644 xtrn/3rdp-install/sunrise-pentasim.js
 create mode 100644 xtrn/3rdp-install/sunrise-questfornora.ini
 create mode 100644 xtrn/3rdp-install/sunrise-questfornora.js
 create mode 100644 xtrn/3rdp-install/sunrise-rescue.ini
 create mode 100644 xtrn/3rdp-install/sunrise-rescue.js
 create mode 100644 xtrn/3rdp-install/sunrise-rockinradio.ini
 create mode 100644 xtrn/3rdp-install/sunrise-rockinradio.js
 create mode 100644 xtrn/3rdp-install/sunrise-rocklandtrivia.ini
 create mode 100644 xtrn/3rdp-install/sunrise-rocklandtrivia.js
 create mode 100644 xtrn/3rdp-install/sunrise-skycop.ini
 create mode 100644 xtrn/3rdp-install/sunrise-skycop.js
 create mode 100644 xtrn/3rdp-install/sunrise-stairway.ini
 create mode 100644 xtrn/3rdp-install/sunrise-stairway.js
 create mode 100644 xtrn/3rdp-install/sunrise-states.ini
 create mode 100644 xtrn/3rdp-install/sunrise-states.js
 create mode 100644 xtrn/3rdp-install/sunrise-sweepstakes.ini
 create mode 100644 xtrn/3rdp-install/sunrise-sweepstakes.js
 create mode 100644 xtrn/3rdp-install/sunrise-timetravel.ini
 create mode 100644 xtrn/3rdp-install/sunrise-timetravel.js
 create mode 100644 xtrn/3rdp-install/sunrise-triangle.ini
 create mode 100644 xtrn/3rdp-install/sunrise-trianglesolitaire.js
 create mode 100644 xtrn/3rdp-install/sunrise-tripleyahtzee.ini
 create mode 100644 xtrn/3rdp-install/sunrise-tripleyahtzee.js
 create mode 100644 xtrn/3rdp-install/sunrise-trivia.ini
 create mode 100644 xtrn/3rdp-install/sunrise-trivia.js
 create mode 100644 xtrn/3rdp-install/sunrise-virtualescape.ini
 create mode 100644 xtrn/3rdp-install/sunrise-virtualescape.js
 create mode 100644 xtrn/3rdp-install/sunrise-wheeloffortune.ini
 create mode 100644 xtrn/3rdp-install/sunrise-wheeloffortune.js
 create mode 100644 xtrn/3rdp-install/sunrise-wordsearch.ini
 create mode 100644 xtrn/3rdp-install/sunrise-wordsearch.js
 create mode 100644 xtrn/3rdp-install/sunrise-wordshuffle.ini
 create mode 100644 xtrn/3rdp-install/sunrise-wordshuffle.js
 create mode 100644 xtrn/3rdp-install/sunrise-wordwar.ini
 create mode 100644 xtrn/3rdp-install/sunrise-wordwar.js
 create mode 100644 xtrn/3rdp-install/sunrise-wordwarp.ini
 create mode 100644 xtrn/3rdp-install/sunrise-wordwarp.js

diff --git a/xtrn/3rdp-install/dreamware-chomper.ini b/xtrn/3rdp-install/dreamware-chomper.ini
new file mode 100644
index 0000000000..8a7afded6d
--- /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 0000000000..83b53b0e1f
--- /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 0000000000..c216a79daf
--- /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 0000000000..93d63ba8d2
--- /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 0000000000..f40c3962f6
--- /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 0000000000..7ce9edf939
--- /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 0000000000..3fbbef0e60
--- /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 0000000000..bddf4195fc
--- /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 0000000000..fff2c11f6d
--- /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 0000000000..65db18ddb2
--- /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 0000000000..ad43907a98
--- /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 0000000000..3085845658
--- /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 0000000000..c9ffbe0e41
--- /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 0000000000..a278d136a1
--- /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 0000000000..cb41046386
--- /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 0000000000..7d3e97397f
--- /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 0000000000..8eccece0da
--- /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 0000000000..6f56fde548
--- /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 0000000000..54629542aa
--- /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 0000000000..ec040445f6
--- /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 0000000000..363c893f45
--- /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 0000000000..66b1d5400a
--- /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 0000000000..d710621f1d
--- /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 0000000000..1251421da3
--- /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 0000000000..372a9a9ac2
--- /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 0000000000..338d48bc70
--- /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 0000000000..dd1990d207
--- /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 0000000000..0cb92c2617
--- /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 0000000000..8d180ba3f6
--- /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 0000000000..2f67e26775
--- /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 0000000000..70d9358efb
--- /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 0000000000..621f174550
--- /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 0000000000..77b8c0f2cf
--- /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 0000000000..1f89f0b84b
--- /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 0000000000..11c6601a08
--- /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 0000000000..3d068cf1ab
--- /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 0000000000..dfa28c8e9e
--- /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 0000000000..1424cbafa3
--- /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 0000000000..4c3ab94acb
--- /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 0000000000..5913b62b6f
--- /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 0000000000..0dfdace525
--- /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 0000000000..f6f2aff670
--- /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 0000000000..1d792dfd0f
--- /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 0000000000..754145e702
--- /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 0000000000..6cdc173dff
--- /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 0000000000..39fdb9c97e
--- /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 0000000000..e1013a1142
--- /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 0000000000..98a1cc6ba4
--- /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 0000000000..2b94e77a07
--- /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 0000000000..cbbc8ef31d
--- /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 0000000000..5cc6b15150
--- /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 0000000000..93b775860e
--- /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 0000000000..7f2638978a
--- /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 0000000000..7acc77e594
--- /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 0000000000..e72cac5eec
--- /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 0000000000..deb8c2a170
--- /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 0000000000..822da2ecdc
--- /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 0000000000..3b043ca69d
--- /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 0000000000..b516609005
--- /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 0000000000..6d23eb1b78
--- /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 0000000000..0f743923d1
--- /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 0000000000..d16cf06d24
--- /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 0000000000..99b9bdd48d
--- /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 0000000000..76d7a92173
--- /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 0000000000..a9fd1db1e8
--- /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 0000000000..7d54407490
--- /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 0000000000..0d03b98439
--- /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 0000000000..103a6a2bbb
--- /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 0000000000..97fd981271
--- /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 0000000000..349a60bb22
--- /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 0000000000..997da76a1c
--- /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 0000000000..78c189cc2b
--- /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 0000000000..b695370cf2
--- /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 0000000000..33db9d9ad9
--- /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 0000000000..7c9419042e
--- /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 0000000000..026adc18dd
--- /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 0000000000..2453ea5fe2
--- /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 0000000000..ebd66db2ab
--- /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 0000000000..0766dd918a
--- /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 0000000000..fc53b0d1e2
--- /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 0000000000..68adca881b
--- /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 0000000000..4986999f50
--- /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 0000000000..0018f6a4b1
--- /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 0000000000..e904146163
--- /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 0000000000..74622d2991
--- /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 0000000000..0d982cc514
--- /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 0000000000..1d93bd5fa0
--- /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 0000000000..1092f4dbe8
--- /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 0000000000..1ad36d9121
--- /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 0000000000..a4c0d7555b
--- /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 0000000000..5caf899f2f
--- /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 0000000000..e8e9994a16
--- /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 0000000000..d9e0ba8868
--- /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 0000000000..e5d131dfb5
--- /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 0000000000..708e36b195
--- /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 0000000000..1fd0b5509c
--- /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 0000000000..3148546880
--- /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 0000000000..aafb46cedd
--- /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 0000000000..f39fb33ab0
--- /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 0000000000..48f6cd7d1b
--- /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 0000000000..3a4d70b44c
--- /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
-- 
GitLab