Index: /trunk/BIOS_Drive_Information_Tool/Src/Print.asm
===================================================================
--- /trunk/BIOS_Drive_Information_Tool/Src/Print.asm	(revision 370)
+++ /trunk/BIOS_Drive_Information_Tool/Src/Print.asm	(revision 371)
@@ -167,5 +167,9 @@
 	add		sp, BYTE 8
 
-	CALL_DISPLAY_LIBRARY	PrintNewlineCharacters
+	push	si
+	mov		si, g_szNewline
+	call	Print_NullTerminatedStringFromSI
+	pop		si
+		
 	ret
 
Index: /trunk/BIOS_Drive_Information_Tool/Src/Strings.asm
===================================================================
--- /trunk/BIOS_Drive_Information_Tool/Src/Strings.asm	(revision 370)
+++ /trunk/BIOS_Drive_Information_Tool/Src/Strings.asm	(revision 371)
@@ -6,34 +6,36 @@
 SECTION .data
 
-g_szProgramName:	db	"BIOS Drive Information Tool v1.0.1",LF,CR
-					db	"(C) 2012 by XTIDE Universal BIOS Team",LF,CR
-					db	"Released under GNU GPL v2",LF,CR
-					db	"http://code.google.com/p/xtideuniversalbios/",LF,CR,NULL
+g_szProgramName:	db	"BIOS Drive Information Tool v1.0.1",CR,LF
+					db	"(C) 2012 by XTIDE Universal BIOS Team",CR,LF
+					db	"Released under GNU GPL v2",CR,LF
+					db	"http://code.google.com/p/xtideuniversalbios/",CR,LF,NULL
 					
-g_szPressAnyKey:	db	LF,CR,"Press any key to display next drive.",LF,CR,NULL
+g_szPressAnyKey:	db	CR,LF,"Press any key to display next drive.",CR,LF,NULL
 
-g_szHeaderDrive:	db	LF,CR,"-= Drive %2x =-",LF,CR,NULL
+g_szHeaderDrive:	db	CR,LF,"-= Drive %2x =-",CR,LF,NULL
 
-g_szAtaInfoHeader:	db	"ATA-information from AH=25h...",LF,CR,NULL
-g_szFormatDrvName:	db	" Name: %s",LF,CR,NULL
-g_szFormatCHS:		db	" Cylinders    : %5-u, Heads: %3-u, Sectors: %2-u",LF,CR,NULL
+g_szAtaInfoHeader:	db	"ATA-information from AH=25h...",CR,LF,NULL
+g_szFormatDrvName:	db	" Name: %s",CR,LF,NULL
+g_szFormatCHS:		db	" Cylinders    : %5-u, Heads: %3-u, Sectors: %2-u",CR,LF,NULL
 g_szChsSectors:		db	" CHS   sectors: ",NULL
 g_szLBA28:			db	" LBA28 sectors: ",NULL
 g_szLBA48:			db	" LBA48 sectors: ",NULL
 
-g_szXTUB:			db	"XTIDE Universal BIOS %s generates following L-CHS...",LF,CR,NULL
+g_szXTUB:			db	"XTIDE Universal BIOS %s generates following L-CHS...",CR,LF,NULL
 g_szXTUBversion:	db	ROM_VERSION_STRING	; This one is NULL terminated
 
-g_szOldInfoHeader:	db	"Old INT 13h information from AH=08h and AH=15h...",LF,CR,NULL
+g_szOldInfoHeader:	db	"Old INT 13h information from AH=08h and AH=15h...",CR,LF,NULL
 					;	Cylinders
 g_szSectors:		db	" Total sectors: ",NULL
 
 
-g_szNewInfoHeader:	db	"EBIOS information from AH=48h...",LF,CR,NULL
-g_szNewExtensions:	db	" Version      : %2-x, Interface bitmap: %2-x",LF,CR,NULL
+g_szNewInfoHeader:	db	"EBIOS information from AH=48h...",CR,LF,NULL
+g_szNewExtensions:	db	" Version      : %2-x, Interface bitmap: %2-x",CR,LF,NULL
 					; Cylinders
 					; Total sectors
-g_szNewSectorSize:	db	" Sector size  : %u",LF,CR,NULL
+g_szNewSectorSize:	db	" Sector size  : %u",CR,LF,NULL
 
-g_szBiosError:		db	" BIOS returned error code %x",LF,CR,NULL
+g_szBiosError:		db	" BIOS returned error code %x",CR,LF,NULL
 g_szDashForZero:	db	"- ",NULL		; Required by Assembly Library
+
+g_szNewline:		db	CR,LF,NULL
Index: /trunk/Serial_Server/win32/Win32.cpp
===================================================================
--- /trunk/Serial_Server/win32/Win32.cpp	(revision 370)
+++ /trunk/Serial_Server/win32/Win32.cpp	(revision 371)
@@ -17,9 +17,11 @@
 #include "../library/flatimage.h"
 
+#include "../../XTIDE_Universal_BIOS/inc/version.inc"
+
 char *bannerStrings[] = {
 	"SerDrive - XTIDE Universal BIOS Serial Drive Server",
 	"Copyright (C) 2012 by XTIDE Universal BIOS Team",
 	"Released under GNU GPL v2, with ABSOLUTELY NO WARRANTY",
-	"Version 2.0.0 Beta1, Built " __DATE__,
+	ROM_VERSION_STRING,
 	"", 
 	NULL };
Index: /trunk/XTIDE_Universal_BIOS/Inc/Version.inc
===================================================================
--- /trunk/XTIDE_Universal_BIOS/Inc/Version.inc	(revision 370)
+++ /trunk/XTIDE_Universal_BIOS/Inc/Version.inc	(revision 371)
@@ -1,4 +1,11 @@
+; /*
 ; Project name	:	XTIDE Universal BIOS
 ; Description	:	Version information.
+
+;--------------------------------------------------------------------------------
+;
+; Assembler Version
+;
+
 %ifndef VERSION_INC
 %define VERSION_INC
@@ -24,2 +31,18 @@
 
 %endif ; VERSION_INC
+
+%comment
+;*/
+
+//--------------------------------------------------------------------------------
+//
+// C/C++ Version
+//
+
+#define BETA " Beta "
+
+#define ROM_VERSION_STRING		"v2.0.0" BETA "1 (" __DATE__ ")"
+
+/*
+%endcomment
+;*/
Index: /trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Buffers.asm
===================================================================
--- /trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Buffers.asm	(revision 370)
+++ /trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Buffers.asm	(revision 371)
@@ -100,28 +100,11 @@
 ALIGN JUMP_ALIGN
 Buffers_SetUnsavedChanges:
-	or		WORD [g_cfgVars+CFGVARS.wFlags], FLG_CFGVARS_UNSAVED
+	or		WORD [cs:g_cfgVars+CFGVARS.wFlags], FLG_CFGVARS_UNSAVED
 	ret
 
 ALIGN JUMP_ALIGN
 Buffers_ClearUnsavedChanges:
-	and		WORD [g_cfgVars+CFGVARS.wFlags], ~FLG_CFGVARS_UNSAVED
-	ret
-
-;--------------------------------------------------------------------		
-; Buffers_TestLoaded
-;	Parameters:
-;		SS:BP:	Menu handle
-;	Returns:
-;		CF:		Set = BIOS Loaded
-;	Corrupts registers:
-;		AX
-;--------------------------------------------------------------------				
-ALIGN JUMP_ALIGN
-Buffers_TestLoaded:
-	test	word [cs:g_cfgVars+CFGVARS.wFlags], FLG_CFGVARS_FILELOADED    ; Clears CF
-	jz		.done
-	stc
-.done:	
-	ret						
+	and		WORD [cs:g_cfgVars+CFGVARS.wFlags], ~FLG_CFGVARS_UNSAVED
+	ret
 
 
Index: /trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Main.asm
===================================================================
--- /trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Main.asm	(revision 370)
+++ /trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Main.asm	(revision 371)
@@ -115,5 +115,5 @@
 	at	CFGVARS.pMenupage,			dw	g_MenupageForMainMenu
 	at	CFGVARS.wFlags,				dw	DEFAULT_CFGVARS_FLAGS
-	at	CFGVARS.wEepromSegment,		dw	DEFAULT_EEPROM_SEGMENT
+	at	CFGVARS.wEepromSegment,		dw	0
 	at	CFGVARS.bEepromType,		db	DEFAULT_EEPROM_TYPE
 	at	CFGVARS.bEepromPage,		db	DEFAULT_PAGE_SIZE
Index: /trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/FlashMenu.asm
===================================================================
--- /trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/FlashMenu.asm	(revision 370)
+++ /trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/FlashMenu.asm	(revision 371)
@@ -168,4 +168,22 @@
 	push	cs
 	pop		ds
+
+	cmp		word [cs:g_cfgVars+CFGVARS.wEepromSegment], 0
+	jnz		.alreadySet
+
+	push	es
+	push	di
+	call	EEPROM_FindXtideUniversalBiosROMtoESDI
+	push	es
+	pop		ax
+	pop		di
+	pop		es
+	jc		.storeEepromSegment
+	mov		ax, DEFAULT_EEPROM_SEGMENT
+.storeEepromSegment:	
+	mov		word [cs:g_cfgVars+CFGVARS.wEepromSegment], ax
+		
+.alreadySet:	
+				
 	mov		si, g_MenupageForFlashMenu
 	jmp		Menupage_ChangeToNewMenupageInDSSI
Index: /trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/MainMenu.asm
===================================================================
--- /trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/MainMenu.asm	(revision 370)
+++ /trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/MainMenu.asm	(revision 371)
@@ -10,5 +10,5 @@
 	at	MENUPAGE.fnEnter,			dw	MainMenu_EnterMenuOrModifyItemVisibility
 	at	MENUPAGE.fnBack,			dw	ExitToDosFromBackButton
-	at	MENUPAGE.wMenuitems,		dw	8
+	at	MENUPAGE.wMenuitems,		dw	9
 iend
 
@@ -72,4 +72,14 @@
 	at	MENUITEM.bType,				db	TYPE_MENUITEM_PAGENEXT
 iend
+
+g_MenuitemMainMenuSaveFile:		
+istruc MENUITEM
+	at	MENUITEM.fnActivate,		dw	BiosFile_SaveUnsavedChanges
+	at	MENUITEM.szName,			dw	g_szItemMainSave
+	at	MENUITEM.szQuickInfo,		dw	g_szNfoMainSave
+	at	MENUITEM.szHelp,			dw	g_szNfoMainSave
+	at	MENUITEM.bFlags,			db	NULL
+	at	MENUITEM.bType,				db	TYPE_MENUITEM_ACTION
+iend		
 
 g_MenuitemMainMenuExitToDos:
@@ -113,4 +123,5 @@
 	call	.EnableOrDisableConfigureXtideUniversalBios
 	call	.EnableOrDisableFlashEeprom
+	call	.EnableOrDisableSave			
 	mov		si, g_MenupageForMainMenu
 	jmp		Menupage_ChangeToNewMenupageInDSSI
@@ -184,6 +195,25 @@
 	ret
 
-
-
+;--------------------------------------------------------------------
+; .EnableOrDisableSave
+;	Parameters:
+;		DS:		CFGVARS segment
+;	Returns:
+;		Nothing
+;	Corrupts registers:
+;		Nothing
+;--------------------------------------------------------------------
+ALIGN JUMP_ALIGN		
+.EnableOrDisableSave:	
+	test	WORD [g_cfgVars+CFGVARS.wFlags], FLG_CFGVARS_FILELOADED
+	jz		SHORT .DisableSave
+	or		BYTE [g_MenuitemMainMenuSaveFile+MENUITEM.bFlags], FLG_MENUITEM_VISIBLE
+	ret
+
+ALIGN JUMP_ALIGN				
+.DisableSave:
+	and		BYTE [g_MenuitemMainMenuSaveFile+MENUITEM.bFlags], ~FLG_MENUITEM_VISIBLE
+	ret
+				
 ;--------------------------------------------------------------------
 ; MENUITEM activation functions (.fnActivate)
Index: /trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Strings.asm
===================================================================
--- /trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Strings.asm	(revision 370)
+++ /trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Strings.asm	(revision 371)
@@ -55,4 +55,5 @@
 g_szItemMainConfigure:	db	"Configure XTIDE Universal BIOS",NULL
 g_szItemMainFlash:		db	"Flash EEPROM",NULL
+g_szItemMainSave:		db	"Save BIOS back to original file",NULL		
 g_szItemMainLicense:	db  "Copyright and License Information",NULL
 g_szItemMainHomePage:	db  "Web Links",NULL
@@ -74,4 +75,5 @@
 g_szNfoMainConfigure:	db	"Configure XTIDE Universal BIOS settings.",NULL
 g_szNfoMainFlash:		db	"Flash loaded BIOS image to EEPROM.",NULL
+g_szNfoMainSave:		db	"Save BIOS changes back to original file from which it was loaded.",NULL
 g_szNfoMainLicense:		db	"XTIDE Universal BIOS and XTIDECFG Copyright (C) 2009-2010 by Tomi Tilli, 2011-2012 by XTIDE Universal BIOS Team. Released under GNU GPL v2, with ABSOLUTELY NO WARRANTY. Press ENTER for more details...",NULL
 g_szNfoMainHomePage:	db	"Visit http://code.google.com/p/ xtideuniversalbios (home page) and http://vintage-computer.com/ vcforum (support)",NULL
