diff --git a/src/sbbs3/sbbscon.c b/src/sbbs3/sbbscon.c
index 026d0f2f2c806f675fd4e766ecaed2122a62677d..733ba089205d362829ec1f7af120f369147cdbae 100644
--- a/src/sbbs3/sbbscon.c
+++ b/src/sbbs3/sbbscon.c
@@ -43,7 +43,7 @@
 #include "mailsrvr.h"	/* mail_startup_t, mail_server */
 
 /* Constants */
-#define SBBSCON_VERSION		"1.00"
+#define SBBSCON_VERSION		"1.10"
 
 /* Global variables */
 BOOL			bbs_running=FALSE;
@@ -55,6 +55,19 @@ mail_startup_t	mail_startup;
 
 static const char* prompt = "Command (?=Help): ";
 
+static const char* usage  = "\r\nusage: %s [[option] [...]]\r\n"
+							"\r\noptions:\r\n\r\n"
+							"defaults   show default settings\r\n"
+							"tf<node>   set First Telnet Node Number\r\n"
+							"tl<node>   set Last Telnet Node Number\r\n"
+							"tp<port>   set Telnet Server Port\r\n"
+							"rp<port>   set RLogin Server Port (and enable RLogin Server)\r\n"
+							"fp<port>   set FTP Server Port\r\n"
+							"sp<port>   set SMTP Server Port\r\n"
+							"sr<port>   set SMTP Relay Port\r\n"
+							"pp<port>   set POP3 Server Port\r\n"
+							;
+
 static void lputs(char *str)
 {
 	static pthread_mutex_t mutex;
@@ -197,11 +210,13 @@ static void mail_terminated(int code)
 /****************************************************************************/
 int main(int argc, char** argv)
 {
+	int		i;
 	char	ch;
+	char*	arg;
 	char*	ctrl_dir;
 	BOOL	quit=FALSE;
 
-	printf("\nSynchronet BBS Console Version %s  Copyright 2000 Rob Swindell\n"
+	printf("\nSynchronet BBS Console Version %s  Copyright 2001 Rob Swindell\n"
 		,SBBSCON_VERSION);
 
 	ctrl_dir=getenv("SBBSCTRL");	/* read from environment variable */
@@ -217,9 +232,10 @@ int main(int argc, char** argv)
     bbs_startup.telnet_interface=INADDR_ANY;
 	bbs_startup.options|=BBS_OPT_NO_QWK_EVENTS;
 
-#ifdef USE_RLOGIN
     bbs_startup.rlogin_port=513;
     bbs_startup.rlogin_interface=INADDR_ANY;
+
+#ifdef USE_RLOGIN
 	bbs_startup.options|=BBS_OPT_ALLOW_RLOGIN;
 #endif
 
@@ -264,6 +280,82 @@ int main(int argc, char** argv)
 	mail_startup.options|=MAIL_OPT_ALLOW_POP3;
     strcpy(mail_startup.ctrl_dir,ctrl_dir);
 
+	/* Process arguments */
+	for(i=1;i<argc;i++) {
+		arg=argv[i];
+		if(*arg=='-')/* ignore prepended slashes */
+			arg++;
+		if(!stricmp(arg,"defaults")) {
+			printf("default settings\r\n");
+			return(0);
+		}
+		switch(toupper(*(arg++))) {
+			case 'T':	/* Telnet settings */
+				switch(toupper(*(arg++))) {
+					case 'P':
+						bbs_startup.telnet_port=atoi(arg);
+						break;
+					case 'F':
+						bbs_startup.first_node=atoi(arg);
+						break;
+					case 'L':
+						bbs_startup.last_node=atoi(arg);
+						break;
+					default:
+						printf(usage,argv[0]);
+						return(0);
+				}
+				break;
+			case 'R':	/* RLogin */
+				bbs_startup.options|=BBS_OPT_ALLOW_RLOGIN;
+				switch(toupper(*(arg++))) {
+					case 'P':
+						bbs_startup.rlogin_port=atoi(arg);
+						break;
+					default:
+						printf(usage,argv[0]);
+						return(0);
+				}
+				break;
+			case 'F':	/* FTP */
+				switch(toupper(*(arg++))) {
+					case 'P':
+						ftp_startup.port=atoi(arg);
+						break;
+					default:
+						printf(usage,argv[0]);
+						return(0);
+				}
+				break;
+			case 'S':	/* SMTP */
+				switch(toupper(*(arg++))) {
+					case 'P':
+						mail_startup.smtp_port=atoi(arg);
+						break;
+					case 'R':
+					    mail_startup.relay_port=atoi(arg);
+						break;
+					default:
+						printf(usage,argv[0]);
+						return(0);
+				}
+				break;
+			case 'P':	/* POP3 */
+				switch(toupper(*(arg++))) {
+					case 'P':
+						mail_startup.pop3_port=atoi(arg);
+						break;
+					default:
+						printf(usage,argv[0]);
+						return(0);
+				}
+				break;
+			default:
+				printf(usage,argv[0]);
+				return(0);
+		}
+	}
+
 	_beginthread((void(*)(void*))bbs_thread,0,&bbs_startup);
 	_beginthread((void(*)(void*))ftp_server,0,&ftp_startup);
 	_beginthread((void(*)(void*))mail_server,0,&mail_startup);