diff --git a/src/sbbs3/jsexec.c b/src/sbbs3/jsexec.c
index cfe931314da8c44d638b72f64231739e3875c4e9..85a57f3eeec313a7115b1d75c4f46d9c992c29ea 100644
--- a/src/sbbs3/jsexec.c
+++ b/src/sbbs3/jsexec.c
@@ -148,8 +148,12 @@ void usage(FILE* fp)
 		"    -i<path_list>  set load() comma-sep search path list (default=\"%s\")\n"
 		"    -f             use non-buffered stream for console messages\n"
 		"    -a             append instead of overwriting message output files\n"
+		"    -A             send all message to stdout\n"
+		"    -A<filename>   send all message to file instead of stdout/stderr\n"
 		"    -e<filename>   send error messages to file in addition to stderr\n"
 		"    -o<filename>   send console messages to file instead of stdout\n"
+		"    -S<filename>   send status messages to file instead of stderr\n"
+		"    -S             send status messages to stdout\n"
 		"    -n             send status messages to %s instead of stderr\n"
 		"    -q             send console messages to %s instead of stdout\n"
 		"    -v             display version details and exit\n"
@@ -1306,6 +1310,22 @@ int main(int argc, char **argv, char** env)
 				case 'a':
 					omode="a";
 					break;
+				case 'A':
+					if (errfp != stderr)
+						fclose(errfp);
+					if(*p == '\0') {
+						errfp = stdout;
+						confp = stdout;
+						statfp = stdout;
+					} else {
+						if((errfp = fopen(p, omode)) == NULL) {
+							perror(p);
+							return(do_bail(1));
+						}
+						statfp = errfp;
+						confp = errfp;
+					}
+					break;
 				case 'C':
 					change_cwd = FALSE;
 					break;
@@ -1329,6 +1349,16 @@ int main(int argc, char **argv, char** env)
 				case 'l':
 					loop=TRUE;
 					break;
+				case 'S':
+					if(*p == '\0')
+						statfp = stdout;
+					else {
+						if((statfp = fopen(p,omode))==NULL) {
+							perror(p);
+							return(do_bail(1));
+						}
+					}
+					break;
 				case 'n':
 					statfp=nulfp;
 					break;