diff --git a/exec/dosemulaunch.ini b/exec/dosemulaunch.ini
index d5b14c09258e5c265df5f74b125b61b3bae1919d..0047505a3f62009475a6e14672fb2b01bfee5fd0 100644
--- a/exec/dosemulaunch.ini
+++ b/exec/dosemulaunch.ini
@@ -18,6 +18,6 @@
 ;
 ; for standard external programs, put it in the global "cmd" key
 ; for intercept i/o programs, you can override by putting "cmd" key under [stdio] section
-cmd=/usr/bin/env $TERM RUNTYPE=FOSSIL HOME=$CTRLDIR QUIET=1 DOSDRIVE_D=$NODEDIR NODEDIR=$NODEDIR $DOSEMUBIN -I"video { none }" $VIRTUALCONF -f$DOSEMUCONF -E$EXTBAT -o$NODEDIRdosemu_boot.log $EXTLOG
+cmd=/usr/bin/env $TERM HOME=$CTRLDIR QUIET=1 DOSDRIVE_D=$NODEDIR NODEDIR=$NODEDIR $DOSEMUBIN -I"video { none }" $VIRTUALCONF -f$DOSEMUCONF -E$EXTBAT -o$NODEDIRdosemu_boot.log $EXTLOG
 [stdio]
-cmd=/usr/bin/env $TERM RUNTYPE=STDIO HOME=$CTRLDIR QUIET=1 DOSDRIVE_D=$NODEDIR NODEDIR=$NODEDIR $DOSEMUBIN -I"video { none }" -I'keystroke "\n"' $VIRTUALCONF -f$DOSEMUCONF -E$EXTBAT -o$NODEDIRdosemu_boot.log $EXTLOG				 
+cmd=/usr/bin/env $TERM HOME=$CTRLDIR QUIET=1 DOSDRIVE_D=$NODEDIR NODEDIR=$NODEDIR $DOSEMUBIN -I"video { none }" -I'keystroke "\n"' $VIRTUALCONF -f$DOSEMUCONF -E$EXTBAT -o$NODEDIRdosemu_boot.log $EXTLOG				 
diff --git a/exec/external.bat b/exec/external.bat
index e8224b68cec20a41f135e75632d4d855f1c85e29..96eb8039dfe7673c14fac5d6463e86fade52f395 100644
--- a/exec/external.bat
+++ b/exec/external.bat
@@ -30,11 +30,10 @@ GOTO EXEC
 
 :NOEMU
 @set PATH=%PATH%;E:\dosutils;H:\dosutils
-unix -s RUNTYPE
 REM fossil driver, such as x00, bnu, or dosemu fossil.com
-rem IF "%RUNTYPE%" == "FOSSIL" @fossil.com >NUL
-rem IF "%RUNTYPE%" == "FOSSIL" bnu.com /P1 /L0=11520 >NUL
-IF "%RUNTYPE%" == "FOSSIL" x00.exe eliminate >NUL
+rem IF "$RUNTYPE" == "FOSSIL" @fossil.com >NUL
+rem IF "$RUNTYPE" == "FOSSIL" bnu.com /P1 /L0=11520 >NUL
+IF "$RUNTYPE" == "FOSSIL" x00.exe eliminate >NUL
 REM share.exe for multinode file locking
 @share >NUL
 
diff --git a/src/sbbs3/xtrn.cpp b/src/sbbs3/xtrn.cpp
index 71e1b177bcf77967ae87d08a3bba2b5e56cb30e8..bb057f967ee020f2fb597b1e84f47755353f96f8 100644
--- a/src/sbbs3/xtrn.cpp
+++ b/src/sbbs3/xtrn.cpp
@@ -1194,6 +1194,7 @@ int sbbs_t::external(const char* cmdline, long mode, const char* startup_dir)
 		char virtualconf[75];
 		char dosterm[15];
 		char log_external[MAX_PATH+1];
+		char runtype[7];
 		str_list_t de_launch_ini;
 		
 		/*  on the Unix side. xtrndir is the parent of the door's startup dir. */
@@ -1315,6 +1316,19 @@ int sbbs_t::external(const char* cmdline, long mode, const char* startup_dir)
 		
 		fprintf(dosemubatfp,"SET STARTDIR=%s\r\n",gamedir);
 
+		/* Check the "Stdio Interception" flag from scfg for this door.  If it's
+		 * enabled, we enable doorway mode.  Else, it's vmodem for us, unless
+		 * it's a timed event.
+		 */
+
+		if (!(mode&(EX_STDIO)) && online!=ON_LOCAL) {
+			SAFECOPY(virtualconf,"-I\"serial { virtual com 1 }\"");
+			SAFECOPY(runtype, "FOSSIL");
+		} else {
+			virtualconf[0] = '\0';
+			SAFECOPY(runtype, "STDIO");
+		}
+
 		/* now append exec/external.bat (which is editable) to this 
 		 generated file */
 		SAFEPRINTF(str,"%sexternal.bat",startup_dir);
@@ -1346,18 +1360,19 @@ int sbbs_t::external(const char* cmdline, long mode, const char* startup_dir)
 		}
 
 		named_string_t externalbat_replacements[] = {
-			{(char*)"CMDLINE",cmdlinebatch },
-			{(char*)"DSZLOG",(char*)nodedrive },
-			{(char*)"SBBSNODE",(char*)nodedrive },
-			{(char*)"SBBSCTRL",(char*)ctrldrive },
-			{(char*)"SBBSDATA",(char*)datadrive },
-			{(char*)"SBBSEXEC",(char*)execdrive },
-			{(char*)"XTRNDIR",xtrndir_dos },
-			{(char*)"CTRLDIR",ctrldir_dos },
-			{(char*)"DATADIR",datadir_dos },
-			{(char*)"EXECDIR",execdir_dos },
-			{(char*)"NODEDIR",nodedir_dos },
-			{(char*)"STARTDIR",(char*)gamedir },
+			{(char*)"CMDLINE", cmdlinebatch },
+			{(char*)"DSZLOG", (char*)nodedrive },
+			{(char*)"SBBSNODE", (char*)nodedrive },
+			{(char*)"SBBSCTRL", (char*)ctrldrive },
+			{(char*)"SBBSDATA", (char*)datadrive },
+			{(char*)"SBBSEXEC", (char*)execdrive },
+			{(char*)"XTRNDIR", xtrndir_dos },
+			{(char*)"CTRLDIR", ctrldir_dos },
+			{(char*)"DATADIR", datadir_dos },
+			{(char*)"EXECDIR", execdir_dos },
+			{(char*)"NODEDIR", nodedir_dos },
+			{(char*)"STARTDIR", (char*)gamedir },
+			{(char*)"RUNTYPE", runtype },
 			{NULL, NULL }
 		};
 
@@ -1375,16 +1390,6 @@ int sbbs_t::external(const char* cmdline, long mode, const char* startup_dir)
 
 		fclose(externalbatfp);
 
-		/* Check the "Stdio Interception" flag from scfg for this door.  If it's
-		 * enabled, we enable doorway mode.  Else, it's vmodem for us, unless
-		 * it's a timed event.
-		 */
-
-		if (!(mode&(EX_STDIO)) && online!=ON_LOCAL)
-			SAFECOPY(virtualconf,"-I\"serial { virtual com 1 }\"");
-		else
-			virtualconf[0] = '\0';
-
 		/* Set the interception bits, since we are always going to want Synchronet
 		 * to intercept dos programs under Unix.
 		 */
@@ -1469,6 +1474,7 @@ int sbbs_t::external(const char* cmdline, long mode, const char* startup_dir)
              {(char*)"DOSEMUCONF", dosemuconf},
              {(char*)"EXTBAT", externalbat},
              {(char*)"EXTLOG", log_external},
+             {(char*)"RUNTYPE", runtype },
              {NULL, NULL}
         };
         replace_named_values(de_launch_cmd, fullcmdline, sizeof(fullcmdline), (char*)"$",