diff --git a/src/sbbs3/jsexec.c b/src/sbbs3/jsexec.c
index f26a379164eb1b8934f0d6ba7cc14778d1e903de..13b407584fd9463a5d3ea50f325a8427279b2eb3 100644
--- a/src/sbbs3/jsexec.c
+++ b/src/sbbs3/jsexec.c
@@ -802,6 +802,22 @@ static BOOL js_init(char** environ)
 		return(FALSE);
 	}
 
+	/* STDIO objects */
+	if(!js_CreateFileObject(js_cx, js_glob, "stdout", stdout)) {
+		JS_ENDREQUEST(js_cx);
+		return(FALSE);
+	}
+
+	if(!js_CreateFileObject(js_cx, js_glob, "stdin", stdin)) {
+		JS_ENDREQUEST(js_cx);
+		return(FALSE);
+	}
+
+	if(!js_CreateFileObject(js_cx, js_glob, "stderr", stderr)) {
+		JS_ENDREQUEST(js_cx);
+		return(FALSE);
+	}
+
 	return(TRUE);
 }
 
diff --git a/src/sbbs3/sbbs.h b/src/sbbs3/sbbs.h
index 8dad968f44747d333b47aad9dd3f617063e0984c..57e5023c97695ed0e70cabf483f055338486e421 100644
--- a/src/sbbs3/sbbs.h
+++ b/src/sbbs3/sbbs.h
@@ -1258,6 +1258,7 @@ extern "C" {
 
 	/* js_file.c */
 	DLLEXPORT JSObject* DLLCALL js_CreateFileClass(JSContext* cx, JSObject* parent);
+	DLLEXPORT JSObject* DLLCALL js_CreateFileObject(JSContext* cx, JSObject* parent, char *name, FILE* fp);
 
 	/* js_sprintf.c */
 	DLLEXPORT char*		DLLCALL js_sprintf(JSContext* cx, uint argn, unsigned argc, jsval *argv);