diff --git a/src/sbbs3/sbbscon.c b/src/sbbs3/sbbscon.c
index 5614bde4680765f6ab90ddde6042e8341d413ba9..6598e1778301e55eca8e844bf924d13cdbe18673 100644
--- a/src/sbbs3/sbbscon.c
+++ b/src/sbbs3/sbbscon.c
@@ -53,6 +53,21 @@ ftp_startup_t	ftp_startup;
 BOOL			mail_running=FALSE;
 mail_startup_t	mail_startup;
 
+static const char* prompt = "Command (?=Help): ";
+
+static lputs(char *str)
+{
+	static pthread_mutex_t mutex;
+
+	if(mutex==0) 
+		pthread_mutex_init(&mutex,NULL);
+
+	pthread_mutex_lock(&mutex);
+	printf("\r%*s\r%s\n",strlen(prompt),"",str);
+	printf(prompt);
+	pthread_mutex_unlock(&mutex);
+}
+
 /************************************************/
 /* Truncates white-space chars off end of 'str' */
 /************************************************/
@@ -80,26 +95,24 @@ static int bbs_lputs(char *str)
 	if(tm_p==NULL)
 		tstr[0]=0;
 	else
-		sprintf(tstr,"%d/%d %02d:%02d:%02d  BBS  "
+		sprintf(tstr,"%d/%d %02d:%02d:%02d "
 			,tm_p->tm_mon+1,tm_p->tm_mday
 			,tm_p->tm_hour,tm_p->tm_min,tm_p->tm_sec);
 
-	sprintf(logline,"%s%.*s",tstr,sizeof(logline)-2,str);
+	sprintf(logline,"%sbbs  %.*s",tstr,sizeof(logline)-2,str);
 	truncsp(logline);
-	printf("%s\n",logline);
+	lputs(logline);
 	
     return(strlen(logline)+1);
 }
 
 static void bbs_started(void)
 {
-	bbs_lputs("bbs_started");
 	bbs_running=TRUE;
 }
 
 static void bbs_terminated(int code)
 {
-	bbs_lputs("bbs_terminated");
 	bbs_running=FALSE;
 }
 
@@ -118,26 +131,24 @@ static int ftp_lputs(char *str)
 	if(tm_p==NULL)
 		tstr[0]=0;
 	else
-		sprintf(tstr,"%d/%d %02d:%02d:%02d  FTP  "
+		sprintf(tstr,"%d/%d %02d:%02d:%02d "
 			,tm_p->tm_mon+1,tm_p->tm_mday
 			,tm_p->tm_hour,tm_p->tm_min,tm_p->tm_sec);
 
-	sprintf(logline,"%s%.*s",tstr,sizeof(logline)-2,str);
+	sprintf(logline,"%sftp  %.*s",tstr,sizeof(logline)-2,str);
 	truncsp(logline);
-	printf("%s\n",logline);
+	lputs(logline);
 	
     return(strlen(logline)+1);
 }
 
 static void ftp_started(void)
 {
-	ftp_lputs("ftp_started");
 	ftp_running=TRUE;
 }
 
 static void ftp_terminated(int code)
 {
-	ftp_lputs("ftp_terminated");
 	ftp_running=FALSE;
 }
 
@@ -156,26 +167,24 @@ static int mail_lputs(char *str)
 	if(tm_p==NULL)
 		tstr[0]=0;
 	else
-		sprintf(tstr,"%d/%d %02d:%02d:%02d  MAIL "
+		sprintf(tstr,"%d/%d %02d:%02d:%02d "
 			,tm_p->tm_mon+1,tm_p->tm_mday
 			,tm_p->tm_hour,tm_p->tm_min,tm_p->tm_sec);
 
-	sprintf(logline,"%s%.*s",tstr,sizeof(logline)-2,str);
+	sprintf(logline,"%smail %.*s",tstr,sizeof(logline)-2,str);
 	truncsp(logline);
-	printf("%s\n",logline);
+	lputs(logline);
 	
     return(strlen(logline)+1);
 }
 
 static void mail_started(void)
 {
-	mail_lputs("mail_started");
 	mail_running=TRUE;
 }
 
 static void mail_terminated(int code)
 {
-	mail_lputs("mail_terminated");
 	mail_running=FALSE;
 }
 
@@ -184,7 +193,9 @@ static void mail_terminated(int code)
 /****************************************************************************/
 int main(int argc, char** argv)
 {
+	char	ch;
 	char*	ctrl_dir;
+	BOOL	quit=FALSE;
 
 	printf("\nSynchronet BBS Console Version %s  Copyright 2000 Rob Swindell\n"
 		,SBBSCON_VERSION);
@@ -249,22 +260,39 @@ int main(int argc, char** argv)
 	_beginthread(ftp_server,0,&ftp_startup);
 //	_beginthread(mail_server,0,&mail_startup);
 
-	while(1) {
-		if(kbhit())
-			break;
-		mswait(1);
+	while(!quit) {
+		ch=getch();
+		printf("%c\n",ch);
+		switch(ch) {
+			case 'q':
+				quit=TRUE;
+				break;
+			default:
+				printf("\nSynchronet BBS Console Version %s Help\n\n",SBBSCON_VERSION);
+				printf("q   = quit\n");
+#if 0	/* to do */
+				printf("n   = node list\n");
+				printf("w   = who's online\n");
+				printf("l#  = lock node #\n");
+				printf("d#  = down node #\n");
+				printf("i#  = interrupt node #\n");
+				printf("c#  = chat with node #\n");
+				printf("s#  = spy on node #\n");
+#endif
+				lputs("");	/* redisplay prompt */
+				break;
+		}
 	}
 
 	bbs_terminate();
 	ftp_terminate();
 //	mail_terminate();
 
-	printf("\nWaiting for servers to terminate...\n");
-
 	while(bbs_running || ftp_running || mail_running)
 		mswait(1);
 
-	printf("\nAll servers terminated\n");
+	/* erase the prompt */
+	printf("\r%*s\r",strlen(prompt),"");
 
 	return(0);
 }
\ No newline at end of file