diff --git a/src/sbbs3/ftpsrvr.c b/src/sbbs3/ftpsrvr.c
index 0ae0a66300ff9a7fed8851e601ae47170bf95d7d..71132a84373130bad79517877d7ec9c7fd02ad00 100644
--- a/src/sbbs3/ftpsrvr.c
+++ b/src/sbbs3/ftpsrvr.c
@@ -3607,9 +3607,9 @@ static void ctrl_thread(void* arg)
 				}
 				if(js_runtime == NULL) {
 					lprintf("%04d JavaScript: Creating runtime: %lu bytes"
-						,sock,JAVASCRIPT_RUNTIME_MEMORY);
+						,sock,startup->js_max_bytes);
 
-					if((js_runtime = JS_NewRuntime(JAVASCRIPT_RUNTIME_MEMORY))==NULL) {
+					if((js_runtime = JS_NewRuntime(startup->js_max_bytes))==NULL) {
 						lprintf("%04d !ERROR creating JavaScript runtime",sock);
 						sockprintf(sock,"451 Error creating JavaScript runtime");
 						filepos=0;
@@ -4279,6 +4279,7 @@ void DLLCALL ftp_server(void* arg)
 		startup->options&=~FTP_OPT_NO_JAVASCRIPT;
 	else
 		startup->options|=FTP_OPT_NO_JAVASCRIPT;
+	if(startup->js_max_bytes==0)			startup->js_max_bytes=JAVASCRIPT_MAX_BYTES;
 
 	thread_up();
 
diff --git a/src/sbbs3/ftpsrvr.h b/src/sbbs3/ftpsrvr.h
index bcd8484160272daaa0f40ada84e95c69b3fe4700..6b7265c237cceb0ed930bf9e31b9caff36372ba9 100644
--- a/src/sbbs3/ftpsrvr.h
+++ b/src/sbbs3/ftpsrvr.h
@@ -53,7 +53,7 @@ typedef struct {
 	WORD	reserved_word1;
     DWORD   interface_addr;
     DWORD	options;			/* See FTP_OPT definitions */
-    DWORD	reserved_dword8;
+    DWORD	js_max_bytes;
     DWORD	reserved_dword7;
     DWORD	reserved_dword6;
     DWORD	reserved_dword5;
diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp
index 03574c92c3627e5a6e53a55c34b595423f8adfde..47f471c0c4881d5905b43f95f91cc14cded342cd 100644
--- a/src/sbbs3/main.cpp
+++ b/src/sbbs3/main.cpp
@@ -469,9 +469,9 @@ bool sbbs_t::js_init()
     	strcpy(node,client_name);
 
 	lprintf("%s JavaScript: Creating runtime: %lu bytes"
-		,node,JAVASCRIPT_RUNTIME_MEMORY);
+		,node,startup->js_max_bytes);
 
-	if((js_runtime = JS_NewRuntime(JAVASCRIPT_RUNTIME_MEMORY))==NULL)
+	if((js_runtime = JS_NewRuntime(startup->js_max_bytes))==NULL)
 		return(false);
 
 	lprintf("%s JavaScript: Initializing context (stack: %lu bytes)"
@@ -2616,11 +2616,11 @@ void node_thread(void* arg)
 
 			/* file_area object */
 			if(js_CreateFileAreaObject(sbbs->js_cx, sbbs->js_glob, &sbbs->cfg, &sbbs->useron, "")==NULL) 
-				lprintf("!JavaScript ERROR createing file_area object");
+				lprintf("!JavaScript ERROR creating file_area object");
 
 			/* msg_area object */
 			if(js_CreateMsgAreaObject(sbbs->js_cx, sbbs->js_glob, &sbbs->cfg, &sbbs->useron)==NULL) 
-				lprintf("!JavaScript ERROR createing msg_area object");
+				lprintf("!JavaScript ERROR creating msg_area object");
 		}
 #endif
 
@@ -3007,6 +3007,7 @@ void DLLCALL bbs_thread(void* arg)
 	if(startup->telnet_port==0)				startup->telnet_port=IPPORT_TELNET;
 	if(startup->rlogin_port==0)				startup->rlogin_port=513;
 	if(startup->xtrn_polls_before_yield==0)	startup->xtrn_polls_before_yield=10;
+	if(startup->js_max_bytes==0)			startup->js_max_bytes=JAVASCRIPT_MAX_BYTES;
 
 	thread_up();
 
diff --git a/src/sbbs3/services.c b/src/sbbs3/services.c
index 754050900a85f3eafffa4d9ab85d32e5d0b18ed3..469f6c179fdee77c3f353060c7a900eb9fcb4b24 100644
--- a/src/sbbs3/services.c
+++ b/src/sbbs3/services.c
@@ -359,12 +359,12 @@ js_login(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
 
 	/* file_area object */
 	if(js_CreateFileAreaObject(cx, obj, &scfg, &user, "")==NULL) 
-		lprintf("%04d %s !JavaScript ERROR createing file_area object"
+		lprintf("%04d %s !JavaScript ERROR creating file_area object"
 			,client->socket,client->service->protocol);
 
 	/* msg_area object */
 	if(js_CreateMsgAreaObject(cx, obj, &scfg, &user)==NULL) 
-		lprintf("%04d %s !JavaScript ERROR createing file_area object"
+		lprintf("%04d %s !JavaScript ERROR creating msg_area object"
 			,client->socket,client->service->protocol);
 
 	client->client->user=user.alias;
@@ -652,7 +652,7 @@ static void js_service_thread(void* arg)
 	/* Initialize client display */
 	client_on(socket,&client);
 
-	if((js_runtime=JS_NewRuntime(JAVASCRIPT_RUNTIME_MEMORY))==NULL
+	if((js_runtime=JS_NewRuntime(startup->js_max_bytes))==NULL
 		|| (js_cx=js_initcx(js_runtime,socket,&service_client,&js_glob))==NULL) {
 		lprintf("%04d !%s ERROR initializing JavaScript context"
 			,socket,service->protocol);
@@ -1005,6 +1005,7 @@ void DLLCALL services_thread(void* arg)
 	}
 
 	/* Setup intelligent defaults */
+	if(startup->js_max_bytes==0)			startup->js_max_bytes=JAVASCRIPT_MAX_BYTES;
 
 	thread_up();
 
diff --git a/src/sbbs3/services.h b/src/sbbs3/services.h
index cff1bfd12285c2a7431458b491722676e1f31879..0ada1e4b97b6baa68f632cd9b8779c79f023fbdb 100644
--- a/src/sbbs3/services.h
+++ b/src/sbbs3/services.h
@@ -49,7 +49,7 @@ typedef struct {
 	DWORD	size;				// sizeof(bbs_struct_t)
     DWORD   interface_addr;
     DWORD	options;			// See BBS_OPT definitions
-    DWORD	reserved_dword5;
+    DWORD	js_max_bytes;
     DWORD	reserved_dword4;
     DWORD	reserved_dword3;
     DWORD	reserved_dword2;
diff --git a/src/sbbs3/startup.h b/src/sbbs3/startup.h
index 6f85b30afbd20251dee20d1f819c2faf268d2361..eb3443b67fee87f7994e4025503b829db99ff0af 100644
--- a/src/sbbs3/startup.h
+++ b/src/sbbs3/startup.h
@@ -60,7 +60,7 @@ typedef struct {
     DWORD	options;			// See BBS_OPT definitions
     DWORD	rlogin_interface;
     DWORD	xtrn_polls_before_yield;
-    DWORD	reserved_dword6;
+    DWORD	js_max_bytes;
     RingBuf** node_spybuf;		// Spy output buffer (each node)
     RingBuf** node_inbuf;		// User input buffer (each node)
     DWORD	reserved_dword2;