Index: /trunk/Serial_Server/library/FlatImage.cpp
===================================================================
--- /trunk/Serial_Server/library/FlatImage.cpp	(revision 210)
+++ /trunk/Serial_Server/library/FlatImage.cpp	(revision 211)
@@ -25,8 +25,8 @@
 		fp = fopen( name, "r" );
 		if( fp )
-			log( 0, "Create Failure: '%s' already exists", name );
+			log( -1, "Create Failure: '%s' already exists", name );
 		
 		if( !(fp = fopen( name, "w" )) )
-			log( 0, "Could not create file '%s'", name );
+			log( -1, "Could not create file '%s'", name );
 
 		memset( &buff[0], 0, 512 );
@@ -35,17 +35,15 @@
 		{
 			if( fwrite( &buff[0], 1, 512, fp ) != 512 )
-				log( 0, "Create write black sector error" );
+				log( -1, "Create write black sector error" );
 		}
 		fclose( fp );
 		
 		sizef = size2/2048.0;
-		log( 1, "Created file '%s' with geometry %u:%u:%u, size %.1lf megabytes\n", name, p_cyl, p_sect, p_head, sizef );
+		log( 0, "Created file '%s' with geometry %u:%u:%u, size %.1lf megabytes\n", name, p_cyl, p_sect, p_head, sizef );
 	}
 
 	fp = fopen( name, "r+" );
 	if( !fp )
-		log( 0, "Could not Open %s", name );
-
-	log( 1, "Opening disk image '%s'", name );
+		log( -1, "Could not Open '%s'", name );
 
 	fseek( fp, 0, SEEK_END );
@@ -53,8 +51,8 @@
 
 	if( !totallba )
-		log( 0, "Could not get file size" );
+		log( -1, "Could not get file size for '%s'", name );
 
 	if( totallba & 0x1ff )
-		log( 0, "File not made up of 512 byte sectors" );
+		log( -1, "'%s' not made up of 512 byte sectors", name );
 
 	totallba >>= 9;
@@ -62,7 +60,7 @@
 	{
 		if( p_sect || p_head || p_cyl )
-			log( 0, "File size does not match geometry" );
+			log( -1, "'%s', file size does not match geometry", name );
 		else if( (totallba % 16) != 0 || ((totallba/16) % 63) != 0 )
-			log( 0, "File size does not match standard geometry (x:16:63), please give explicitly with -g" );
+			log( -1, "'%s', file size does not match standard geometry (x:16:63), please geometry explicitly with -g", name );
 		else
 		{
@@ -80,5 +78,5 @@
 
 	sizef = totallba/2048.0;
-	log( 1, "Using geometry %u:%u:%u, total size %.1lf megabytes", cyl, sect, head, sizef );
+	log( 0, "Opening disk image '%s', geometry %u:%u:%u, total size %.1lf MB", name, cyl, sect, head, sizef );
 }
 
Index: /trunk/Serial_Server/library/Image.cpp
===================================================================
--- /trunk/Serial_Server/library/Image.cpp	(revision 210)
+++ /trunk/Serial_Server/library/Image.cpp	(revision 211)
@@ -33,5 +33,8 @@
 
 	if( *(shortFileName) == 0 )
-		log( 0, "Can't parse %s\n\n", name );
+	{
+		log( 1, "Can't parse '%s' for short file name\n\n", name );
+		shortFileName = "SerDrive";
+	}
   
 	readOnly = p_readOnly;
Index: /trunk/Serial_Server/library/Process.cpp
===================================================================
--- /trunk/Serial_Server/library/Process.cpp	(revision 210)
+++ /trunk/Serial_Server/library/Process.cpp	(revision 211)
@@ -68,5 +68,5 @@
 			sprintf( &logBuff[logCount*9], "... " );
 
-		log( 4, "%s%s", message, logBuff );
+		log( 3, "%s%s", message, logBuff );
 	}
 }
@@ -118,5 +118,5 @@
 			len = 1;
 			workCount = 0;
-			log( 2, "Timeout waiting on command" );
+			log( 1, "Timeout waiting on command" );
 			continue;
 		}
@@ -149,7 +149,7 @@
 				{
 					if( buff.b[0] >= 0x20 && buff.b[0] <= 0x7e )
-						log( 3, "Spurious: [%d:%c]", buff.b[0], buff.b[0] );
+						log( 2, "Spurious: [%d:%c]", buff.b[0], buff.b[0] );
 					else
-						log( 3, "Spurious: [%d]", buff.b[0] );
+						log( 2, "Spurious: [%d]", buff.b[0] );
 				}
 				buffoffset = 0;
@@ -172,5 +172,5 @@
 			if( (crc = checksum( &buff.w[0], 256 )) != buff.w[256] )
 			{
-				log( 1, "Bad Write Sector Checksum" );
+				log( 0, "Bad Write Sector Checksum" );
 				continue;
 			}
@@ -178,5 +178,5 @@
 			if( img->readOnly )
 			{
-				log( 2, "Attempt to write to read-only image" );
+				log( 1, "Attempt to write to read-only image" );
 				continue;
 			}
@@ -189,5 +189,5 @@
 			//
 			if( serial->writeCharacters( &buff.w[256], 2 ) != 2 )
-				log( 1, "Serial Port Write Error" );
+				log( 0, "Serial Port Write Error" );
 
 			workOffset++;
@@ -209,5 +209,5 @@
 				if( buff.b[0] != (workCount-0) )
 				{
-					log( 1, "Continue Fault: Received=%d, Expected=%d", buff.b[0], workCount );
+					log( 0, "Continue Fault: Received=%d, Expected=%d", buff.b[0], workCount );
 					workCount = 0;
 					continue;
@@ -221,5 +221,5 @@
 				if( (crc = checksum( &buff.w[0], 3 )) != buff.w[3] )
 				{
-					log( 1, "Bad Command Checksum: %02x %02x %02x %02x %02x %02x %02x %02x, Checksum=%02x",
+					log( 0, "Bad Command Checksum: %02x %02x %02x %02x %02x %02x %02x %02x, Checksum=%02x",
 						 buff.b[0], buff.b[1], buff.b[2], buff.b[3], buff.b[4], buff.b[5], buff.b[6], buff.b[7], crc);
 					continue;
@@ -230,5 +230,5 @@
 					if( !image1 )
 					{
-						log( 2, "Slave drive selected when not supplied" );
+						log( 1, "Slave drive selected when not supplied" );
 						img = NULL;
 						continue;
@@ -261,5 +261,5 @@
 				if( (workCommand & SERIAL_COMMAND_WRITE) && img->readOnly )
 				{
-					log( 2, "Write attempt to Read Only disk" );
+					log( 1, "Write attempt to Read Only disk" );
 					continue;
 				}
@@ -293,7 +293,7 @@
 
 						if( br )
-							log( 2, "    Ignoring Inquire with Baud Rate=%d", br->rate );
+							log( 1, "    Ignoring Inquire with Baud Rate=%d", br->rate );
 						else
-							log( 2, "    Ignoring Inquire with Unknown Baud Rate (portAndBaud=%d)", buff.inquire.portAndBaud );
+							log( 1, "    Ignoring Inquire with Unknown Baud Rate (portAndBaud=%d)", buff.inquire.portAndBaud );
 						workCount = 0;
 						continue;
@@ -314,5 +314,5 @@
 
 				if( serial->writeCharacters( &buff.w[0], 514 ) != 514 )
-					log( 1, "Serial Port Write Error" );
+					log( 0, "Serial Port Write Error" );
 
 				workCount--;
@@ -327,8 +327,8 @@
 
 			if( vtype == 1 )
-				log( 2, "%s %d: LBA=%u, Count=%u", comStr, img == image0 ? 0 : 1,
+				log( 1, "%s %d: LBA=%u, Count=%u", comStr, img == image0 ? 0 : 1,
 					 mylba, workCount );
 			else if( vtype == 2 )
-				log( 2, "%s %d: Cylinder=%u, Sector=%u, Head=%u, Count=%u, LBA=%u", comStr, img == image0 ? 0 : 1,
+				log( 1, "%s %d: Cylinder=%u, Sector=%u, Head=%u, Count=%u, LBA=%u", comStr, img == image0 ? 0 : 1,
 					 cyl, sect, head, workCount+1, mylba );
 
@@ -336,5 +336,5 @@
 
 			if( workOffset > 1 )
-				log( 3, "    Continuation: Offset=%u, Checksum=%04x", workOffset-1, buff.w[256] );
+				log( 2, "    Continuation: Offset=%u, Checksum=%04x", workOffset-1, buff.w[256] );
 
 			if( !(workCommand & SERIAL_COMMAND_WRITE) && verboseLevel >= 4 )
@@ -342,5 +342,5 @@
 
 			if( workCount == 0 && workOffset > 100 )
-				log( 2, "    Block Complete: %.2lf bytes per second", (512.0 * workOffset) / (GetTime() - perfTimer) * 1000.0 );
+				log( 1, "    Block Complete: %.2lf bytes per second", (512.0 * workOffset) / (GetTime() - perfTimer) * 1000.0 );
 		}
 	}
Index: /trunk/Serial_Server/makefile
===================================================================
--- /trunk/Serial_Server/makefile	(revision 210)
+++ /trunk/Serial_Server/makefile	(revision 211)
@@ -13,6 +13,6 @@
 WIN32OBJS = build/win32.obj build/win32serial.obj build/checksum.obj build/serial.obj build/flatimage.obj build/process.obj build/image.obj
 
-build/serserve.exe:	$(WIN32OBJS)
-	$(CL) /Febuild/serserve.exe $(WIN32OBJS)
+build/serdrive.exe:	$(WIN32OBJS)
+	$(CL) /Febuild/serdrive.exe $(WIN32OBJS)
 
 build/%.obj:	win32/%.cpp
Index: /trunk/Serial_Server/win32/Win32.cpp
===================================================================
--- /trunk/Serial_Server/win32/Win32.cpp	(revision 210)
+++ /trunk/Serial_Server/win32/Win32.cpp	(revision 211)
@@ -21,16 +21,30 @@
 {
 	char *usageStrings[] = {
-		"usage: SerServe [options] master-imagefile [[slave-options] slave-imagefile]",
+		"SerDrive - XTIDE Universal BIOS Serial Drive Server",
+		"Version 1.2.0_wip, Built " __DATE__,
+		"",
+		"usage: SerDrive [options] imagefile [[slave-options] slave-imagefile]",
+		"",
 		"  -g cyl:sect:head  Geometry in cylinders, sectors per cylinder, and heads",
 		"                    (default is 65:63:16 for a 32 MB disk)",
-		"  -n [megabytes]    New, Create new disk with given size or use -g geometry",
-		"  -p                Named pipe mode for emulators (pipe is " PIPENAME ")",
-		"  -c PortNumber     COM Port to use (default is first found)",
+		"",
+		"  -n [megabytes]    Create new disk with given size or use -g geometry",
+		"",
+		"  -p                Named Pipe mode for emulators (pipe is '" PIPENAME "')",
+		"",
+		"  -c COMPortNumber  COM Port to use (default is first found)",
+		"",
 		"  -b BaudRate       Baud rate to use on the COM port ",
-		"                    9600, 38400, 115200, 230400, or 460800",   
-		"                    (default 9600, 115200 in pipe mode)",
+		"                    Without a rate multiplier: 2400, 9600, 38400, 115200",
+		"                    With a 2x rate multiplier: 4800, 19200, 76800, 230400",
+		"                    With a 4x rate multiplier: 9600, 38400, 153600, 460800",
+		"                    Abbreviations also accepted (ie, '460K', '38.4K', etc)",
+		"                    (default is 9600, 115200 in named pipe mode)",
+		"",
 		"  -t                Disable timeout, useful for long delays when debugging",
-		"  -r                Read Only disk",
-		"  -v [level]        Reporting level 1-6, increasing information",
+		"",
+		"  -r                Read Only disk, do not allow writes",
+		"",
+		"  -v [level]        Reporting level 1-6, with increasing information",
 		NULL };
 
@@ -41,5 +55,5 @@
 }
 
-int verbose = 1;
+int verbose = 0;
 
 int main(int argc, char* argv[])
@@ -158,5 +172,5 @@
 
 		if( serial->resetConnection )
-			log( 1, "==== Resetting Connection ====" );
+			log( 0, "Connection closed, reset..." );
 	}
 	while( serial->resetConnection );
@@ -169,14 +183,15 @@
 	va_start( args, message );
 
-	if( level == 0 )
-	{
-	  vfprintf( stderr, message, args );
-	  fprintf( stderr, "\n" );
-	  exit( 1 );
+	if( level < 0 )
+	{
+		fprintf( stderr, "ERROR: " );
+		vfprintf( stderr, message, args );
+		fprintf( stderr, "\n" );
+		exit( 1 );
 	}
 	else if( verbose >= level )
 	{
-	  vprintf( message, args );
-	  printf( "\n" );
+		vprintf( message, args );
+		printf( "\n" );
 	}
 
Index: /trunk/Serial_Server/win32/Win32Serial.cpp
===================================================================
--- /trunk/Serial_Server/win32/Win32Serial.cpp	(revision 210)
+++ /trunk/Serial_Server/win32/Win32Serial.cpp	(revision 211)
@@ -40,17 +40,17 @@
 		}
 		if( !name )
-			log( 0, "No Physical COM Ports Found" );
+			log( -1, "No physical COM ports found" );
 	}
 
 	if( !strcmp( name, "PIPE" ) )
 	{
-		log( 1, "Opening named pipe %s (simulating %lu baud)", PIPENAME, baudRate->rate );
+		log( 0, "Opening named pipe %s (simulating %lu baud)", PIPENAME, baudRate->rate );
 		
 		pipe = CreateNamedPipeA( PIPENAME, PIPE_ACCESS_DUPLEX, PIPE_TYPE_BYTE|PIPE_REJECT_REMOTE_CLIENTS, 2, 1024, 1024, 0, NULL );
 		if( !pipe )
-			log( 0, "Could not CreateNamedPipe " PIPENAME );
+			log( -1, "Could not CreateNamedPipe " PIPENAME );
 		
 		if( !ConnectNamedPipe( pipe, NULL ) )
-			log( 0, "Could not ConnectNamedPipe" );
+			log( -1, "Could not ConnectNamedPipe" );
 
 		speedEmulation = 1;
@@ -61,9 +61,9 @@
 		if( QueryDosDeviceA( name, buff2, sizeof(buff2) ) )
 		{
-			log( 1, "Opening %s (%lu baud)", name, baudRate->rate );
+			log( 0, "Opening %s (%lu baud)", name, baudRate->rate );
 			
 			pipe = CreateFileA( name, GENERIC_READ|GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 );
 			if( !pipe )
-				log( 0, "Could not Open \"%s\"", name );
+				log( -1, "Could not Open \"%s\"", name );
 			
 			FillMemory(&dcb, sizeof(dcb), 0);
@@ -74,27 +74,30 @@
 			dcb.Parity = NOPARITY;
 			if( !SetCommState( pipe, &dcb ) )
-				log( 0, "Could not SetCommState" );
+				log( -1, "Could not SetCommState" );
 
 			if( !SetCommTimeouts( pipe, &timeouts ) )
-				log( 0, "Could not SetCommTimeouts" );
+				log( -1, "Could not SetCommTimeouts" );
 		}
 		else
 		{
-			int first = 1;
 			char logbuff[ 1024 ];
-			sprintf( logbuff, "Serial Port Not Found \"%s\", Available: ", name );
-			for( int t = 1; t <= 30 && !name; t++ )
+			int found = 0;
+
+			sprintf( logbuff, "serial port '%s' not found, detected COM ports:", name );
+
+			for( int t = 1; t <= 40; t++ )
 			{
 				sprintf( buff1, "COM%d", t );
 				if( QueryDosDeviceA( buff1, buff2, sizeof(buff2) ) )
 				{
-					if( !first )
-						strcat( logbuff, ", " );
-					else
-						first = 0;
+					strcat( logbuff, "\n    " );
 					strcat( logbuff, buff1 );
+					found = 1;
 				}
 			}
-			log( 0, logbuff );
+			if( !found )
+				strcat( logbuff, "\n    (none)" );
+
+			log( -1, logbuff );
 		}
 	}
