Index: trunk/XTIDE_Universal_BIOS_Configurator_v2/Inc/Variables.inc
===================================================================
--- trunk/XTIDE_Universal_BIOS_Configurator_v2/Inc/Variables.inc	(revision 612)
+++ trunk/XTIDE_Universal_BIOS_Configurator_v2/Inc/Variables.inc	(revision 614)
@@ -26,5 +26,5 @@
 MAX_LITE_MODE_CONTROLLERS			EQU		2
 EEPROM_POLLING_TIMEOUT_TICKS		EQU		3	; 1 tick = 54.9 ms
-XTIDE_SIGNATURE_LENGTH				EQU		8	; XTIDE Universal BIOS signature string length
+XTIDE_SIGNATURE_LENGTH				EQU		6	; XTIDE Universal BIOS signature string length (must be even)
 NUMBER_OF_EEPROM_TYPES				EQU		5
 MAX_EEPROM_SIZE_IN_BYTES			EQU		65536
Index: trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/AutoConfigure.asm
===================================================================
--- trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/AutoConfigure.asm	(revision 612)
+++ trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/AutoConfigure.asm	(revision 614)
@@ -42,4 +42,5 @@
 	pop		ds								; ROMVARS now in DS:DI
 	call	ChecksumSystemBios
+	call	DetectOlivettiM24
 	call	ResetIdevarsToDefaultValues
 	call	DetectIdePortsAndDevices
@@ -139,4 +140,29 @@
 
 ;--------------------------------------------------------------------
+; DetectOlivettiM24
+;	Parameters:
+;		Nothing
+;	Returns:
+;		ZF:		Set if computer is not an Olivetti M24
+;				Clear if computer is an Olivetti M24
+;	Corrupts registers:
+;		AX, BX, CX, DX
+;--------------------------------------------------------------------
+ALIGN JUMP_ALIGN
+DetectOlivettiM24:
+	mov		ah, 0FEh	; Request the current date and time
+	mov		ch, 0FFh	; Set the hours to an invalid value
+	int		BIOS_TIME_PCI_PNP_INTERRUPT_1Ah
+	inc		ch			; Hours changed?
+	jz		SHORT .ThisIsNotAnOlivettiM24
+	mov		BYTE [cs:IsOlivettiM24], 1
+.ThisIsNotAnOlivettiM24:
+	ret
+
+IsOlivettiM24:
+	db		0
+
+
+;--------------------------------------------------------------------
 ; ResetIdevarsToDefaultValues
 ;	Parameters:
Index: trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Buffers.asm
===================================================================
--- trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Buffers.asm	(revision 612)
+++ trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Buffers.asm	(revision 614)
@@ -73,5 +73,5 @@
 	push	di
 
-	mov		si, g_szXtideUniversalBiosSignature
+	mov		si, g_sXtideUniversalBiosSignature
 	add		di, BYTE ROMVARS.rgbSign
 	mov		cx, XTIDE_SIGNATURE_LENGTH / 2
Index: trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/IdeAutodetect.asm
===================================================================
--- trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/IdeAutodetect.asm	(revision 612)
+++ trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/IdeAutodetect.asm	(revision 614)
@@ -139,6 +139,11 @@
 	eSHL_IM	bx, 1						; SHL 1 register offsets for XT-CF
 	call	DetectIdeDeviceFromPortsDXandSIwithOffsetsInBLandBH
+	jc		SHORT .ContinueDetection
+	mov		al, DEVICE_8BIT_XTCF_PIO8_WITH_BIU_OFFLOAD
+	cmp		BYTE [cs:IsOlivettiM24], 1
+	jne		SHORT .IdeDeviceFound
 	mov		al, DEVICE_8BIT_XTCF_PIO8
-	jnc		SHORT .IdeDeviceFound
+	jmp		SHORT .IdeDeviceFound
+.ContinueDetection:
 	shr		bx, 1
 .SkipXTCF:
@@ -166,5 +171,10 @@
 	pop		dx
 	cmp		al, DEVICE_8BIT_XTIDE_REV2
-	je		SHORT .IdeDeviceFound
+	jne		SHORT .XtideRev1
+	cmp		BYTE [cs:IsOlivettiM24], 1
+	jne		SHORT .IdeDeviceFound
+	mov		al, DEVICE_8BIT_XTIDE_REV2_OLIVETTI
+	ret		; With CF cleared
+.XtideRev1:
 	mov		al, DEVICE_8BIT_XTIDE_REV1	; We must have rev 1
 .IdeDeviceFound:
Index: trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Main.asm
===================================================================
--- trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Main.asm	(revision 612)
+++ trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Main.asm	(revision 614)
@@ -25,4 +25,5 @@
 %include "AssemblyLibrary.inc"	; Assembly Library. Must be included first!
 %include "RomVars.inc"			; XTIDE Universal BIOS variables
+%include "ATA_ID.inc"			; Needed for Master/Slave Drive menu
 %include "IdeRegisters.inc"		; Needed for port and device autodetection
 %include "JRIDE_ISA.inc"		; For JR-IDE/ISA default segment
Index: trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/IdeControllerMenu.asm
===================================================================
--- trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/IdeControllerMenu.asm	(revision 612)
+++ trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/IdeControllerMenu.asm	(revision 614)
@@ -475,32 +475,26 @@
 ;--------------------------------------------------------------------
 .EnableOrDisableSerial:
-	mov		bx, g_MenuitemIdeControllerSerialBaud
-	call	DisableMenuitemFromCSBX
-
-	mov		bx, g_MenuitemIdeControllerSerialCOM
-	call	DisableMenuitemFromCSBX
-
-	mov		bx, g_MenuitemIdeControllerSerialPort
-	call	DisableMenuitemFromCSBX
-
 	mov		bx, [g_MenuitemIdeControllerDevice+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset]
 	call	Buffers_GetRomvarsValueToAXfromOffsetInBX
 	cmp		al, DEVICE_SERIAL_PORT
-	jne		SHORT .DisableAllSerial
-
-	mov		bx, g_MenuitemIdeControllerSerialCOM
-	call	EnableMenuitemFromCSBX
-
-	mov		bx, g_MenuitemIdeControllerSerialBaud
-	call	EnableMenuitemFromCSBX
-
+	mov		ax, DisableMenuitemFromCSBX
+	jne		SHORT .DisableSerialControllerMenuitems
+	mov		ax, EnableMenuitemFromCSBX
+	call	.EnableSerialControllerMenuitems
 	mov		bx, [g_MenuitemIdeControllerSerialCOM+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset]
 	call	Buffers_GetRomvarsValueToAXfromOffsetInBX
+	cmp		al, 'x'
+	mov		ax, DisableMenuitemFromCSBX
+	jne		SHORT .DisableCustomPortMenuitem
+	ret
+.DisableSerialControllerMenuitems:
+.EnableSerialControllerMenuitems:
+	mov		bx, g_MenuitemIdeControllerSerialCOM
+	call	ax
+	mov		bx, g_MenuitemIdeControllerSerialBaud
+	call	ax
+.DisableCustomPortMenuitem:
 	mov		bx, g_MenuitemIdeControllerSerialPort
-	cmp		al, 'x'
-	je		SHORT .EnableMenuitemFromCSBX
-	jmp		SHORT .DisableMenuitemFromCSBX
-.DisableAllSerial:
-	ret
+	jmp		ax
 
 
@@ -516,4 +510,6 @@
 ALIGN JUMP_ALIGN
 MasterDrive:
+	mov		bx, g_MenuitemMasterSlaveDisableDetection
+	call	DisableMenuitemFromCSBX
 	mov		bx, [cs:g_MenuitemIdeControllerMasterDrive+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset]
 	jmp		SHORT DisplayMasterSlaveMenu
@@ -521,33 +517,10 @@
 ALIGN JUMP_ALIGN
 SlaveDrive:
+	mov		bx, g_MenuitemMasterSlaveDisableDetection
+	call	EnableMenuitemFromCSBX
 	mov		bx, [cs:g_MenuitemIdeControllerSlaveDrive+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset]
 	; Fall to DisplayMasterSlaveMenu
 
-ALIGN JUMP_ALIGN
 DisplayMasterSlaveMenu:
-;
-; "Block Mode Transfers" and "Internal Write Cache" are not supported on serial drives, disable/enable the options as appropriate
-;
-	push	bx
-	mov		bx, [cs:g_MenuitemIdeControllerDevice+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset]
-	call	Buffers_GetRomvarsValueToAXfromOffsetInBX
-	mov		bx, g_MenuitemMasterSlaveBlockModeTransfers
-
-	cmp		al, DEVICE_SERIAL_PORT
-	je		.isSerial
-
-	call	EnableMenuitemFromCSBX
-	mov		bx, g_MenuitemMasterSlaveWriteCache
-	call	EnableMenuitemFromCSBX
-	jmp		.isDone
-
-.isSerial:
-	call	DisableMenuitemFromCSBX
-	mov		bx, g_MenuitemMasterSlaveWriteCache
-	call	DisableMenuitemFromCSBX
-
-.isDone:
-	pop		bx
-
 	call	MasterSlaveMenu_InitializeToDrvparamsOffsetInBX
 	jmp		MasterSlaveMenu_EnterMenuOrModifyItemVisibility
@@ -657,5 +630,5 @@
 	mov		ax, DEVICE_XTIDE_DEFAULT_PORT		; Defaults for 8-bit XTIDE and XT-CF devices
 	mov		bx, DEVICE_XTIDE_DEFAULT_PORTCTRL
-	
+
 	; XT-CF does not support IRQ so it must be disabled (IRQ setting is not visible for XT-CF)
 	; XTIDE does not use IRQs by default
Index: trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/MasterSlaveMenu.asm
===================================================================
--- trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/MasterSlaveMenu.asm	(revision 612)
+++ trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/MasterSlaveMenu.asm	(revision 614)
@@ -26,5 +26,5 @@
 	at	MENUPAGE.fnEnter,			dw	MasterSlaveMenu_EnterMenuOrModifyItemVisibility
 	at	MENUPAGE.fnBack,			dw	IdeControllerMenu_EnterMenuOrModifyItemVisibility
-	at	MENUPAGE.wMenuitems,		dw	10
+	at	MENUPAGE.wMenuitems,		dw	11
 iend
 
@@ -39,4 +39,20 @@
 iend
 
+g_MenuitemMasterSlaveDisableDetection:
+istruc MENUITEM
+	at	MENUITEM.fnActivate,		dw	Menuitem_ActivateMultichoiceSelectionForMenuitemInDSSI
+	at	MENUITEM.fnFormatValue,		dw	MenuitemPrint_WriteLookupValueStringToBufferInESDIfromShiftedItemInDSSI
+	at	MENUITEM.szName,			dw	g_szItemDrvDisableDetection
+	at	MENUITEM.szQuickInfo,		dw	g_szNfoDrvDisableDetection
+	at	MENUITEM.szHelp,			dw	g_szHelpDrvDisableDetection
+	at	MENUITEM.bFlags,			db	FLG_MENUITEM_MODIFY_MENU | FLG_MENUITEM_FLAGVALUE
+	at	MENUITEM.bType,				db	TYPE_MENUITEM_MULTICHOICE
+	at	MENUITEM.itemValue + ITEM_VALUE.wRomvarsValueOffset,		dw	NULL
+	at	MENUITEM.itemValue + ITEM_VALUE.szDialogTitle,				dw	g_szDlgDrvDisableDetection
+	at	MENUITEM.itemValue + ITEM_VALUE.szMultichoice,				dw	g_szMultichoiceBooleanFlag
+	at	MENUITEM.itemValue + ITEM_VALUE.rgszValueToStringLookup,	dw	g_rgszValueToStringLookupForFlagBooleans
+	at	MENUITEM.itemValue + ITEM_VALUE.wValueBitmask,				dw	FLG_DRVPARAMS_DO_NOT_DETECT
+iend
+
 g_MenuitemMasterSlaveBlockModeTransfers:
 istruc MENUITEM
@@ -46,5 +62,5 @@
 	at	MENUITEM.szQuickInfo,		dw	g_szNfoDrvBlockMode
 	at	MENUITEM.szHelp,			dw	g_szHelpDrvBlockMode
-	at	MENUITEM.bFlags,			db	FLG_MENUITEM_VISIBLE | FLG_MENUITEM_FLAGVALUE
+	at	MENUITEM.bFlags,			db	FLG_MENUITEM_FLAGVALUE
 	at	MENUITEM.bType,				db	TYPE_MENUITEM_MULTICHOICE
 	at	MENUITEM.itemValue + ITEM_VALUE.wRomvarsValueOffset,		dw	NULL
@@ -62,9 +78,9 @@
 	at	MENUITEM.szQuickInfo,		dw	g_szNfoDrvXlateMode
 	at	MENUITEM.szHelp,			dw	g_szNfoDrvXlateMode
-	at	MENUITEM.bFlags,			db	FLG_MENUITEM_VISIBLE | FLG_MENUITEM_MASKVALUE
+	at	MENUITEM.bFlags,			db	FLG_MENUITEM_MASKVALUE
 	at	MENUITEM.bType,				db	TYPE_MENUITEM_MULTICHOICE
 	at	MENUITEM.itemValue + ITEM_VALUE.wRomvarsValueOffset,		dw	NULL
 	at	MENUITEM.itemValue + ITEM_VALUE.szDialogTitle,				dw	g_szDlgDrvXlateMode
-	at	MENUITEM.itemValue + ITEM_VALUE.szMultichoice,				dw	g_szMultichoiseXlateMode
+	at	MENUITEM.itemValue + ITEM_VALUE.szMultichoice,				dw	g_szMultichoiceXlateMode
 	at	MENUITEM.itemValue + ITEM_VALUE.rgwChoiceToValueLookup,		dw	g_rgwChoiceToValueLookupForXlateMode
 	at	MENUITEM.itemValue + ITEM_VALUE.rgszChoiceToStringLookup,	dw	g_rgszChoiceToStringLookupForXlateMode
@@ -80,9 +96,9 @@
 	at	MENUITEM.szQuickInfo,		dw	g_szNfoDrvWriteCache
 	at	MENUITEM.szHelp,			dw	g_szHelpDrvWriteCache
-	at	MENUITEM.bFlags,			db	FLG_MENUITEM_VISIBLE | FLG_MENUITEM_MASKVALUE
+	at	MENUITEM.bFlags,			db	FLG_MENUITEM_MASKVALUE
 	at	MENUITEM.bType,				db	TYPE_MENUITEM_MULTICHOICE
 	at	MENUITEM.itemValue + ITEM_VALUE.wRomvarsValueOffset,		dw	NULL
 	at	MENUITEM.itemValue + ITEM_VALUE.szDialogTitle,				dw	g_szDlgDrvWriteCache
-	at	MENUITEM.itemValue + ITEM_VALUE.szMultichoice,				dw	g_szMultichoiseWrCache
+	at	MENUITEM.itemValue + ITEM_VALUE.szMultichoice,				dw	g_szMultichoiceWrCache
 	at	MENUITEM.itemValue + ITEM_VALUE.rgwChoiceToValueLookup,		dw	g_rgwChoiceToValueLookupForWriteCache
 	at	MENUITEM.itemValue + ITEM_VALUE.rgszChoiceToStringLookup,	dw	g_rgszChoiceToStringLookupForWriteCache
@@ -98,5 +114,5 @@
 	at	MENUITEM.szQuickInfo,		dw	g_szNfoDrvUserCHS
 	at	MENUITEM.szHelp,			dw	g_szHelpDrvUserCHS
-	at	MENUITEM.bFlags,			db	FLG_MENUITEM_VISIBLE | FLG_MENUITEM_MODIFY_MENU | FLG_MENUITEM_FLAGVALUE
+	at	MENUITEM.bFlags,			db	FLG_MENUITEM_MODIFY_MENU | FLG_MENUITEM_FLAGVALUE
 	at	MENUITEM.bType,				db	TYPE_MENUITEM_MULTICHOICE
 	at	MENUITEM.itemValue + ITEM_VALUE.wRomvarsValueOffset,		dw	NULL
@@ -163,5 +179,5 @@
 	at	MENUITEM.szQuickInfo,		dw	g_szNfoDrvUserLBA
 	at	MENUITEM.szHelp,			dw	g_szHelpDrvUserLBA
-	at	MENUITEM.bFlags,			db	FLG_MENUITEM_VISIBLE | FLG_MENUITEM_MODIFY_MENU | FLG_MENUITEM_FLAGVALUE
+	at	MENUITEM.bFlags,			db	FLG_MENUITEM_MODIFY_MENU | FLG_MENUITEM_FLAGVALUE
 	at	MENUITEM.bType,				db	TYPE_MENUITEM_MULTICHOICE
 	at	MENUITEM.itemValue + ITEM_VALUE.wRomvarsValueOffset,		dw	NULL
@@ -239,4 +255,5 @@
 %endif
 %endif
+	mov		[g_MenuitemMasterSlaveDisableDetection+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset], ax
 	mov		[g_MenuitemMasterSlaveBlockModeTransfers+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset], ax
 	mov		[g_MenuitemMasterSlaveChsTranslateMode+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset], ax
@@ -274,9 +291,65 @@
 	push	cs
 	pop		ds
+	mov		bx, [g_MenuitemMasterSlaveDisableDetection+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset]
+	call	Buffers_GetRomvarsValueToAXfromOffsetInBX
+	mov		si, g_MenupageForMasterSlaveMenu
+	ePUSH_T	bx, Menupage_ChangeToNewMenupageInDSSI
+	test	al, FLG_DRVPARAMS_DO_NOT_DETECT
+	jnz		SHORT .DisableAllItemsOnThisMenuExceptDisableDetection
+	call	.EnableOrDisableItemsDependingOnControllerBeingSerialOrNot
 	call	.EnableOrDisableUserCHSandLBA
 	call	.EnableOrDisableCHandS
-	call	.EnableOrDisableUserLbaValue
-	mov		si, g_MenupageForMasterSlaveMenu
-	jmp		Menupage_ChangeToNewMenupageInDSSI
+	jmp		.EnableOrDisableUserLbaValue
+
+
+;--------------------------------------------------------------------
+; .EnableOrDisableItemsDependingOnControllerBeingSerialOrNot
+;	Parameters:
+;		SS:BP:	Menu handle
+;	Returns:
+;		Nothing
+;	Corrupts registers:
+;		AX, BX
+;--------------------------------------------------------------------
+ALIGN JUMP_ALIGN
+.EnableOrDisableItemsDependingOnControllerBeingSerialOrNot:
+	mov		bx, [g_MenuitemIdeControllerDevice+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset]
+	call	Buffers_GetRomvarsValueToAXfromOffsetInBX
+	mov		bx, g_MenuitemMasterSlaveChsTranslateMode
+	call	EnableMenuitemFromCSBX
+	cmp		al, DEVICE_SERIAL_PORT
+	je		SHORT .DisableAllItemsNotApplicableToSerialDrives
+	mov		bx, g_MenuitemMasterSlaveBlockModeTransfers
+	call	EnableMenuitemFromCSBX
+	mov		bx, g_MenuitemMasterSlaveWriteCache
+	jmp		EnableMenuitemFromCSBX
+
+
+;--------------------------------------------------------------------
+; .DisableAllItemsOnThisMenuExceptDisableDetection
+; .DisableAllItemsNotApplicableToSerialDrives
+;	Parameters:
+;		SS:BP:	Menu handle
+;	Returns:
+;		Nothing
+;	Corrupts registers:
+;		AX, BX
+;--------------------------------------------------------------------
+ALIGN JUMP_ALIGN
+.DisableAllItemsOnThisMenuExceptDisableDetection:
+	mov		bx, g_MenuitemMasterSlaveChsTranslateMode
+	call	DisableMenuitemFromCSBX
+	mov		bx, g_MenuitemMasterSlaveUserCHS
+	call	DisableMenuitemFromCSBX
+	call	.DisableCHandS
+	mov		bx, g_MenuitemMasterSlaveUserLBA
+	call	DisableMenuitemFromCSBX
+	mov		bx, g_MenuitemMasterSlaveUserLbaValue
+	call	DisableMenuitemFromCSBX
+.DisableAllItemsNotApplicableToSerialDrives:
+	mov		bx, g_MenuitemMasterSlaveBlockModeTransfers
+	call	DisableMenuitemFromCSBX
+	mov		bx, g_MenuitemMasterSlaveWriteCache
+	jmp		SHORT .DisableMenuitemFromCSBX
 
 
@@ -338,19 +411,16 @@
 	jnz		SHORT .DisableCHandS
 
+	mov		ax, EnableMenuitemFromCSBX
+	jmp		SHORT .EnableCHandS
+
+.DisableCHandS:
+	mov		ax, DisableMenuitemFromCSBX
+.EnableCHandS:
 	mov		bx, g_MenuitemMasterSlaveCylinders
-	call	EnableMenuitemFromCSBX
+	call	ax
 	mov		bx, g_MenuitemMasterSlaveHeads
-	call	EnableMenuitemFromCSBX
+	call	ax
 	mov		bx, g_MenuitemMasterSlaveSectors
-	jmp		SHORT .EnableMenuitemFromCSBX
-
-ALIGN JUMP_ALIGN
-.DisableCHandS:
-	mov		bx, g_MenuitemMasterSlaveCylinders
-	call	DisableMenuitemFromCSBX
-	mov		bx, g_MenuitemMasterSlaveHeads
-	call	DisableMenuitemFromCSBX
-	mov		bx, g_MenuitemMasterSlaveSectors
-	jmp		SHORT .DisableMenuitemFromCSBX
+	jmp		ax
 
 
Index: trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Strings.asm
===================================================================
--- trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Strings.asm	(revision 612)
+++ trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Strings.asm	(revision 614)
@@ -26,5 +26,5 @@
 ; Menu title
 g_szProgramTitle:					db	"Configuration and Flashing program for XTIDE Universal BIOS v2.0.0.",LF,CR,NULL
-g_szXtideUniversalBiosSignature:	db	FLASH_SIGNATURE,NULL
+g_sXtideUniversalBiosSignature:		db	FLASH_SIGNATURE		; No need to terminate with NULL.
 g_szBiosIsNotLoaded:				db	"BIOS is not loaded!",NULL
 g_szEEPROM:							db	"EEPROM",NULL
@@ -307,170 +307,176 @@
 g_szValueCfgDeviceSerial:					db	"Serial",NULL
 
-g_szSerialCOMChoice:	db	"COM1 - address 3F8h",LF
-						db	"COM2 - address 2F8h",LF
-						db	"COM3 - address 3E8h",LF
-						db	"COM4 - address 2E8h",LF
-						db	"COM5 - address 2F0h",LF
-						db	"COM6 - address 3E0h",LF
-						db	"COM7 - address 2E0h",LF
-						db	"COM8 - address 260h",LF
-						db	"COM9 - address 368h",LF
-						db	"COMA - address 268h",LF
-						db	"COMB - address 360h",LF
-						db	"COMC - address 270h",LF
-						db	"COMx - Custom address",NULL
-
-g_szValueCfgCOM1:		db	"COM1",NULL
-g_szValueCfgCOM2:		db	"COM2",NULL
-g_szValueCfgCOM3:		db	"COM3",NULL
-g_szValueCfgCOM4:		db	"COM4",NULL
-g_szValueCfgCOM5:		db	"COM5",NULL
-g_szValueCfgCOM6:		db	"COM6",NULL
-g_szValueCfgCOM7:		db	"COM7",NULL
-g_szValueCfgCOM8:		db	"COM8",NULL
-g_szValueCfgCOM9:		db	"COM9",NULL
-g_szValueCfgCOMA:		db	"COMA",NULL
-g_szValueCfgCOMB:		db	"COMB",NULL
-g_szValueCfgCOMC:		db	"COMC",NULL
-g_szValueCfgCOMx:		db	"Custom",NULL
-
-g_szSerialBaudChoice:	db	"115.2K baud",LF
-						db	"57.6K baud",LF
-						db	"38.4K baud",LF
-						db	"28.8K baud",LF
-						db	"19.2K baud",LF
-						db	"9600 baud",LF
-						db	"4800 baud",LF
-						db	"2400 baud",NULL
-
-g_szValueCfgBaud115_2:	db	"115.2K",NULL
-g_szValueCfgBaud57_6:	db	"57.6K",NULL
-g_szValueCfgBaud38_4:	db	"38.4K",NULL
-g_szValueCfgBaud28_8:	db	"28.8K",NULL
-g_szValueCfgBaud19_2:	db	"19.2K",NULL
-g_szValueCfgBaud9600:	db	"9600",NULL
-g_szValueCfgBaud4800:	db	"4800",NULL
-g_szValueCfgBaud2400:	db	"2400",NULL
+g_szSerialCOMChoice:			db	"COM1 - address 3F8h",LF
+								db	"COM2 - address 2F8h",LF
+								db	"COM3 - address 3E8h",LF
+								db	"COM4 - address 2E8h",LF
+								db	"COM5 - address 2F0h",LF
+								db	"COM6 - address 3E0h",LF
+								db	"COM7 - address 2E0h",LF
+								db	"COM8 - address 260h",LF
+								db	"COM9 - address 368h",LF
+								db	"COMA - address 268h",LF
+								db	"COMB - address 360h",LF
+								db	"COMC - address 270h",LF
+								db	"COMx - Custom address",NULL
+
+g_szValueCfgCOM1:				db	"COM1",NULL
+g_szValueCfgCOM2:				db	"COM2",NULL
+g_szValueCfgCOM3:				db	"COM3",NULL
+g_szValueCfgCOM4:				db	"COM4",NULL
+g_szValueCfgCOM5:				db	"COM5",NULL
+g_szValueCfgCOM6:				db	"COM6",NULL
+g_szValueCfgCOM7:				db	"COM7",NULL
+g_szValueCfgCOM8:				db	"COM8",NULL
+g_szValueCfgCOM9:				db	"COM9",NULL
+g_szValueCfgCOMA:				db	"COMA",NULL
+g_szValueCfgCOMB:				db	"COMB",NULL
+g_szValueCfgCOMC:				db	"COMC",NULL
+g_szValueCfgCOMx:				db	"Custom",NULL
+
+g_szSerialBaudChoice:			db	"115.2K baud",LF
+								db	"57.6K baud",LF
+								db	"38.4K baud",LF
+								db	"28.8K baud",LF
+								db	"19.2K baud",LF
+								db	"9600 baud",LF
+								db	"4800 baud",LF
+								db	"2400 baud",NULL
+
+g_szValueCfgBaud115_2:			db	"115.2K",NULL
+g_szValueCfgBaud57_6:			db	"57.6K",NULL
+g_szValueCfgBaud38_4:			db	"38.4K",NULL
+g_szValueCfgBaud28_8:			db	"28.8K",NULL
+g_szValueCfgBaud19_2:			db	"19.2K",NULL
+g_szValueCfgBaud9600:			db	"9600",NULL
+g_szValueCfgBaud4800:			db	"4800",NULL
+g_szValueCfgBaud2400:			db	"2400",NULL
 
 
 ; Strings for DRVPARAMS menu
-g_szItemDrvBackToIde:	db	"Back to IDE Controller Menu",NULL
-g_szItemDrvBlockMode:	db	"Block Mode Transfers",NULL
-g_szItemDrvXlateMode:	db	"CHS translation method",NULL
-g_szItemDrvWriteCache:	db	"Internal Write Cache",NULL
-g_szItemDrvUserCHS:		db	"User specified CHS",NULL
-g_szItemDrvCyls:		db	"Cylinders",NULL
-g_szItemDrvHeads:		db	"Heads",NULL
-g_szItemDrvSect:		db	"Sectors per track",NULL
-g_szItemDrvUserLBA:		db	"User specified LBA",NULL
-g_szItemDrvLbaSectors:	db	"Millions of sectors",NULL
-
-g_szDlgDrvBlockMode:	db	"Enable Block Mode Transfers?",NULL
-g_szDlgDrvXlateMode:	db	"Select P-CHS to L-CHS translation method.",NULL
-g_szDlgDrvWriteCache:	db	"Select hard drive internal write cache settings.",NULL
-g_szDlgDrvUserCHS:		db	"Specify (P-)CHS parameters manually?",NULL
-g_szDlgDrvCyls:			db	"Enter number of P-CHS cylinders (1...16383).",NULL
-g_szDlgDrvHeads:		db	"Enter number of P-CHS heads (1...16).",NULL
-g_szDlgDrvSect:			db	"Enter number of sectors per track (1...63).",NULL
-g_szDlgDrvUserLBA:		db	"Limit drive capacity?",NULL
-g_szDlgDrvLbaSectors:	db	"Enter maximum capacity in millions of sectors (16...256).",NULL
-
-g_szNfoDrvBlockMode:	db	"Transfer multiple sectors per data request.",NULL
-g_szNfoDrvXlateMode:	db	"P-CHS to L-CHS translation method.",NULL
-g_szNfoDrvWriteCache:	db	"Hard Drive Internal Write Cache settings (WARNING!).",NULL
-g_szNfoDrvUserCHS:		db	"Specify (P-)CHS parameters manually instead of autodetecting them.",NULL
-g_szNfoDrvCyls:			db	"Number of user specified P-CHS cylinders.",NULL
-g_szNfoDrvHeads:		db	"Number of user specified P-CHS heads.",NULL
-g_szNfoDrvSect:			db	"Number of user specified P-CHS sectors per track.",NULL
-g_szNfoDrvUserLBA:		db	"Limit drive capacity to fix compatibility problems with Windows 9x.",NULL
-g_szNfoDrvLbaSectors:	db	"Millions of sectors (1024*1024). 1M sectors = 512 MiB. Recommended limits are 64 for Windows 95, 128 for Windows 98 and 256 for Windows ME (and 98 with updated fdisk).",NULL
-
-g_szHelpDrvBlockMode:	db	"Block Mode will speed up transfers since multiple sectors can be transferred before waiting next data request."
-						db	" Normally Block Mode should always be kept enabled but there is at least one"
-						db	" drive with buggy Block Mode implementation (Quantum ProDrive LPS 340A).",NULL
-
-g_szHelpDrvWriteCache:	db	"Modern Hard Drives have a large amount of internal write cache."
-						db	" The cache will speed up writes since the drive can free the bus right after data has been written to cache."
-						db	" The drive then starts to write the data from cache to disk by itself."
-						db	" This can be dangerous since all unwritten data in cache is lost if power is turned off or the system is reset."
-						db	" Modern operating systems will flush the cache when user shuts down the system."
-						db	" DOS does not have that sort of protection so it is up to the user to make sure cache is flushed."
-						db	" WARNING!!! Write cache should be left disabled.",NULL
-
-g_szHelpDrvUserCHS:		db	"Specify (P-)CHS parameters manually instead of autodetecting them."
-						db	" This can be used to limit drive size for old operating systems that do not support large hard disks."
-						db	" Some early IDE drives have buggy autodetection so they require CHS to be specified manually."
-						db	" Limiting Cylinders will work for all drives but drives may not accept all values for Heads and Sectors per Track.",NULL
-
-g_szHelpDrvUserLBA:		db	"Limit drive size to X million sectors for EBIOS functions. This option is useful to"
-						db	" prevent large drive compatibility problems with MS-DOS 7.x (Windows 95 and 98).",NULL
-
-g_szMultichoiseXlateMode:
-						db	"NORMAL",LF
-						db	"LARGE",LF
-						db	"Assisted LBA",LF
-						db	"Autodetect",NULL
-
-g_szValueDrvXlateNormal:db	"NORMAL",NULL
-g_szValueDrvXlateLarge:	db	"LARGE",NULL
-g_szValueDrvXlateLBA:	db	"LBA",NULL
-g_szValueDrvXlateAuto:	db	"Auto",NULL
-
-g_szMultichoiseWrCache:	db	"Drive Default",LF
-						db	"Disable Write Cache",LF
-						db	"Enable Write Cache",NULL
-
-g_szValueDrvWrCaDis:	db	"Disabled",NULL
-g_szValueDrvWrCaEn:		db	"Enabled",NULL
+g_szItemDrvBackToIde:			db	"Back to IDE Controller Menu",NULL
+g_szItemDrvDisableDetection:	db	"Disable Detection",NULL
+g_szItemDrvBlockMode:			db	"Block Mode Transfers",NULL
+g_szItemDrvXlateMode:			db	"CHS translation method",NULL
+g_szItemDrvWriteCache:			db	"Internal Write Cache",NULL
+g_szItemDrvUserCHS:				db	"User specified CHS",NULL
+g_szItemDrvCyls:				db	"Cylinders",NULL
+g_szItemDrvHeads:				db	"Heads",NULL
+g_szItemDrvSect:				db	"Sectors per track",NULL
+g_szItemDrvUserLBA:				db	"User specified LBA",NULL
+g_szItemDrvLbaSectors:			db	"Millions of sectors",NULL
+
+g_szDlgDrvDisableDetection:		db	"Disable detection of this drive?",NULL
+g_szDlgDrvBlockMode:			db	"Enable Block Mode Transfers?",NULL
+g_szDlgDrvXlateMode:			db	"Select P-CHS to L-CHS translation method.",NULL
+g_szDlgDrvWriteCache:			db	"Select hard drive internal write cache settings.",NULL
+g_szDlgDrvUserCHS:				db	"Specify (P-)CHS parameters manually?",NULL
+g_szDlgDrvCyls:					db	"Enter number of P-CHS cylinders (1...16383).",NULL
+g_szDlgDrvHeads:				db	"Enter number of P-CHS heads (1...16).",NULL
+g_szDlgDrvSect:					db	"Enter number of sectors per track (1...63).",NULL
+g_szDlgDrvUserLBA:				db	"Limit drive capacity?",NULL
+g_szDlgDrvLbaSectors:			db	"Enter maximum capacity in millions of sectors (16...256).",NULL
+
+g_szNfoDrvDisableDetection:		db	"Disable detection of this drive.",NULL
+g_szNfoDrvBlockMode:			db	"Transfer multiple sectors per data request.",NULL
+g_szNfoDrvXlateMode:			db	"P-CHS to L-CHS translation method.",NULL
+g_szNfoDrvWriteCache:			db	"Hard Drive Internal Write Cache settings (WARNING!).",NULL
+g_szNfoDrvUserCHS:				db	"Specify (P-)CHS parameters manually instead of autodetecting them.",NULL
+g_szNfoDrvCyls:					db	"Number of user specified P-CHS cylinders.",NULL
+g_szNfoDrvHeads:				db	"Number of user specified P-CHS heads.",NULL
+g_szNfoDrvSect:					db	"Number of user specified P-CHS sectors per track.",NULL
+g_szNfoDrvUserLBA:				db	"Limit drive capacity to fix compatibility problems with Windows 9x.",NULL
+g_szNfoDrvLbaSectors:			db	"Millions of sectors (1024*1024). 1M sectors = 512 MiB. Recommended limits are 64 for Windows 95,"
+								db	" 128 for Windows 98 and 256 for Windows ME (and 98 with updated fdisk).",NULL
+
+g_szHelpDrvDisableDetection:	db	"Disabling slave drive detection will reduce the boot time slightly. This is useful when you know that"
+								db	" there will never be a slave drive connected to a particular controller.",NULL
+
+g_szHelpDrvBlockMode:			db	"Block Mode will speed up transfers since multiple sectors can be transferred before waiting next data request."
+								db	" Normally Block Mode should always be kept enabled but there is at least one"
+								db	" drive with buggy Block Mode implementation (Quantum ProDrive LPS 340A).",NULL
+
+g_szHelpDrvWriteCache:			db	"Modern Hard Drives have a large amount of internal write cache."
+								db	" The cache will speed up writes since the drive can free the bus right after data has been written to cache."
+								db	" The drive then starts to write the data from cache to disk by itself."
+								db	" This can be dangerous since all unwritten data in cache is lost if power is turned off or the system is reset."
+								db	" Modern operating systems will flush the cache when user shuts down the system."
+								db	" DOS does not have that sort of protection so it is up to the user to make sure cache is flushed."
+								db	" WARNING!!! Write cache should be left disabled.",NULL
+
+g_szHelpDrvUserCHS:				db	"Specify (P-)CHS parameters manually instead of autodetecting them."
+								db	" This can be used to limit drive size for old operating systems that do not support large hard disks."
+								db	" Some early IDE drives have buggy autodetection so they require CHS to be specified manually."
+								db	" Limiting Cylinders will work for all drives but drives may not accept all values for Heads and Sectors per Track.",NULL
+
+g_szHelpDrvUserLBA:				db	"Limit drive size to X million sectors for EBIOS functions. This option is useful to"
+								db	" prevent large drive compatibility problems with MS-DOS 7.x (Windows 95 and 98).",NULL
+
+g_szMultichoiceXlateMode:		db	"NORMAL",LF
+								db	"LARGE",LF
+								db	"Assisted LBA",LF
+								db	"Autodetect",NULL
+
+g_szValueDrvXlateNormal:		db	"NORMAL",NULL
+g_szValueDrvXlateLarge:			db	"LARGE",NULL
+g_szValueDrvXlateLBA:			db	"LBA",NULL
+g_szValueDrvXlateAuto:			db	"Auto",NULL
+
+g_szMultichoiceWrCache:			db	"Drive Default",LF
+								db	"Disable Write Cache",LF
+								db	"Enable Write Cache",NULL
+
+g_szValueDrvWrCaDis:			db	"Disabled",NULL
+g_szValueDrvWrCaEn:				db	"Enabled",NULL
 
 
 ; Strings for boot settings menu
-g_szItemBootTimeout:		db	"Selection timeout",NULL
-g_szItemBootDrive:			db	"Default boot drive",NULL
-g_szItemBootDispMode:		db	"Display Mode",NULL
-g_szItemColorTheme:			db	"Color Theme",NULL
-g_szItemBootFloppyDrvs:		db	"Number of Floppy Drives",NULL
-g_szItemSerialDetect:		db	"Scan for Serial Drives",NULL
-g_szItemClearBdaDriveCount:	db	"Remove other hard drives",NULL
-
-g_szDlgBootTimeout:			db	"Enter Boot Menu selection timeout in BIOS timer ticks (2...1092).",NULL
-g_szDlgBootDrive:			db	"Enter default drive number (0xh for Floppy Drives, 8xh for Hard Disks).",NULL
-g_szDlgBootDispMode:		db	"Select display mode.",NULL
-g_szDlgColorTheme:			db	"Select color theme.",NULL
-g_szDlgBootFloppyDrvs:		db	"Select number of Floppy Drives in system.",NULL
-g_szDlgSerialDetect:		db	"Scan for serial drives?",NULL
-g_szDlgClearBdaDriveCount:	db	"Remove existing INT 13h hard drives during drive detection?",NULL
-
-g_szNfoBootTimeout:			db	"Menu item selection timeout in BIOS timer ticks. 1 tick = 54.9 ms.",NULL
-g_szNfoBootDrive:			db	"Default boot drive.",NULL
-g_szNfoDispMode:			db	"Display mode to set when booting.",NULL
-g_szNfoColorTheme:			db	"Color theme used by the boot menu and the hotkey bar.",NULL
-g_szNfoBootFloppyDrvs:		db	"Number of Floppy Drives in system.",NULL
-g_szNfoSerialDetect:		db	"Scans all standard COM ports for serial drives."
-							db	" This can also be invoked by holding down ALT at the end of normal drive detection.",NULL
-g_szNfoClearBdaDriveCount:	db	"Can be used to remove duplicate hard drives.",NULL
-
-g_szHelpBootTimeout:		db	"Boot Menu selection timeout in BIOS timer ticks (1 second = 18.2 ticks)."
-							db	" When timer goes to zero, currently selected drive will be booted automatically."
-							db	" Timeout can be disabled by setting this to 0.",NULL
-g_szHelpBootDrive:			db	"Drive to be set selected by default when Boot Menu is displayed.",NULL
-g_szHelpColorTheme:			db	"Pick a theme from a list of several pre-defined themes to customize the colors used by the boot menu and, if"
-							db	" available, the hotkey bar. Selecting a theme or loading a BIOS, or its settings, from file or from ROM will"
-							db	" make XTIDECFG apply the theme to itself for easy preview. The ability to preview themes requires that"
-							db	" XTIDECFG is running in a display mode that can display colors. In other words, you may configure the"
-							db	" BIOS on a machine with a monochrome graphics adapter and not be able to preview the theme but the BIOS will"
-							db	" still use the selected theme when installed in a machine with a color graphics adapter.",NULL
-g_szHelpBootFloppyDrvs:		db	"Detecting the correct number of floppy drives might fail when using a floppy controller with its own BIOS."
-							db	" A minimum number of floppy drives can be specified to force non-detected drives to appear on boot menu.",NULL
-g_szHelpSerialDetect:		db	"Set to Yes, at the end of normal drive detection, COM ports 1-7 (in reverse order) will be scanned for a connection"
-							db	" to a serial drive server. This option provides flexibility with the COM port and baud rate to be used,"
-							db	" it need not be configured ahead of time, but at the expense of a slower boot process."
-							db	" Even when this option is set to No, this functionality can still be invoked by holding down the ALT key at the end"
-							db	" of normal drive detection. Note that if any serial drives are detected during the normal drive detection,"
-							db	" no scan will take place (to avoid finding the same drive twice).",NULL
-g_szHelpClearBdaDriveCount:	db	"Set to NO for normal operation. Set to YES to get Windows 9x protected mode drivers to work when"
-							db	" MODULE_WIN9X_CMOS_HACK is not included (dummy drive needs to be defined in system BIOS setup). This option must"
-							db	" also be set to YES on computers where the system BIOS does not initialize RAM properly. Zenith models Z-171 and"
-							db	" Z-161 are known examples of such machines.",NULL
+g_szItemBootTimeout:			db	"Selection timeout",NULL
+g_szItemBootDrive:				db	"Default boot drive",NULL
+g_szItemBootDispMode:			db	"Display Mode",NULL
+g_szItemColorTheme:				db	"Color Theme",NULL
+g_szItemBootFloppyDrvs:			db	"Number of Floppy Drives",NULL
+g_szItemSerialDetect:			db	"Scan for Serial Drives",NULL
+g_szItemClearBdaDriveCount:		db	"Remove other hard drives",NULL
+
+g_szDlgBootTimeout:				db	"Enter Boot Menu selection timeout in BIOS timer ticks (2...1092).",NULL
+g_szDlgBootDrive:				db	"Enter default drive number (0xh for Floppy Drives, 8xh for Hard Disks).",NULL
+g_szDlgBootDispMode:			db	"Select display mode.",NULL
+g_szDlgColorTheme:				db	"Select color theme.",NULL
+g_szDlgBootFloppyDrvs:			db	"Select number of Floppy Drives in system.",NULL
+g_szDlgSerialDetect:			db	"Scan for serial drives?",NULL
+g_szDlgClearBdaDriveCount:		db	"Remove existing INT 13h hard drives during drive detection?",NULL
+
+g_szNfoBootTimeout:				db	"Menu item selection timeout in BIOS timer ticks. 1 tick = 54.9 ms.",NULL
+g_szNfoBootDrive:				db	"Default boot drive.",NULL
+g_szNfoDispMode:				db	"Display mode to set when booting.",NULL
+g_szNfoColorTheme:				db	"Color theme used by the boot menu and the hotkey bar.",NULL
+g_szNfoBootFloppyDrvs:			db	"Number of Floppy Drives in system.",NULL
+g_szNfoSerialDetect:			db	"Scans all standard COM ports for serial drives."
+								db	" This can also be invoked by holding down ALT at the end of normal drive detection.",NULL
+g_szNfoClearBdaDriveCount:		db	"Can be used to remove duplicate hard drives.",NULL
+
+g_szHelpBootTimeout:			db	"Boot Menu selection timeout in BIOS timer ticks (1 second = 18.2 ticks)."
+								db	" When timer goes to zero, currently selected drive will be booted automatically."
+								db	" Timeout can be disabled by setting this to 0.",NULL
+g_szHelpBootDrive:				db	"Drive to be set selected by default when Boot Menu is displayed.",NULL
+g_szHelpColorTheme:				db	"Pick a theme from a list of several pre-defined themes to customize the colors used by the boot menu and, if"
+								db	" available, the hotkey bar. Selecting a theme or loading a BIOS, or its settings, from file or from ROM will"
+								db	" make XTIDECFG apply the theme to itself for easy preview. The ability to preview themes requires that"
+								db	" XTIDECFG is running in a display mode that can display colors. In other words, you may configure the"
+								db	" BIOS on a machine with a monochrome graphics adapter and not be able to preview the theme but the BIOS will"
+								db	" still use the selected theme when installed in a machine with a color graphics adapter.",NULL
+g_szHelpBootFloppyDrvs:			db	"Detecting the correct number of floppy drives might fail when using a floppy controller with its own BIOS."
+								db	" A minimum number of floppy drives can be specified to force non-detected drives to appear on boot menu.",NULL
+g_szHelpSerialDetect:			db	"Set to Yes, at the end of normal drive detection, COM ports 1-7 (in reverse order) will be scanned for a connection"
+								db	" to a serial drive server. This option provides flexibility with the COM port and baud rate to be used,"
+								db	" it need not be configured ahead of time, but at the expense of a slower boot process."
+								db	" Even when this option is set to No, this functionality can still be invoked by holding down the ALT key at the end"
+								db	" of normal drive detection. Note that if any serial drives are detected during the normal drive detection,"
+								db	" no scan will take place (to avoid finding the same drive twice).",NULL
+g_szHelpClearBdaDriveCount:		db	"Set to NO for normal operation. Set to YES to get Windows 9x protected mode drivers to work when"
+								db	" MODULE_WIN9X_CMOS_HACK is not included (dummy drive needs to be defined in system BIOS setup). This option must"
+								db	" also be set to YES on computers where the system BIOS does not initialize RAM properly. Zenith models Z-171 and"
+								db	" Z-161 are known examples of such machines.",NULL
 
 g_szMultichoiceBootDispMode:	db	"Default",LF
@@ -513,73 +519,70 @@
 
 ; Strings for Flash menu
-g_szItemFlashStart:		db	"Start flashing",NULL
-g_szItemFlashEepromType:db	"EEPROM type",NULL
-g_szItemFlashSDP:		db	"SDP command",NULL
-g_szItemFlashAddr:		db	"EEPROM address",NULL
-g_szItemFlashPageSize:	db	"Page size",NULL
-g_szItemFlashChecksum:	db	"Generate checksum byte",NULL
-
-g_szDlgFlashEepromType:	db	"Select EEPROM type.",NULL
-g_szDlgFlashSDP:		db	"Select Software Data Protection command.",NULL
-g_szDlgFlashAddr:		db	"Enter segment address where EEPROM is located.",NULL
-g_szDlgFlashPageSize:	db	"Select write page size.",NULL
-g_szDlgFlashChecksum:	db	"Generate checksum byte to the end of BIOS image?",NULL
-
-g_szNfoFlashEepromType:	db	"EEPROM type.",NULL
-g_szNfoFlashStart:		db	"Writes BIOS to EEPROM.",NULL
-g_szNfoFlashSDP:		db	"Software Data Protection command.",NULL
-g_szNfoFlashAddr:		db	"Address (segment) where EEPROM is located.",NULL
-g_szNfoFlashPageSize:	db	"Number of bytes to write before delay.",NULL
-g_szNfoFlashChecksum:	db	"Generate checksum byte to the end of BIOS image.",NULL
-
-g_szHelpFlashSDP:		db	"Software Data Protection Command:",LF
-						db	"None    = Do not use Software Data Protection. Meant for EEPROMs that do not support SDP.",LF,LF
-						db	"Enable  = Write protects the EEPROM after flashing."
-						db	" Software Data Protection should always be enabled if EEPROM supports it.",LF,LF
-						db	"Disable = Disables Software Data Protection after flashing.",NULL
-
-g_szHelpFlashPageSize:	db	"Larger page size will improve write performance but not all EEPROMs support large pages or page writing at all."
-						db	" Byte writing mode will be used when page size is set to 1. Byte writing mode is supported by all EEPROMs."
-						db	" Large pages cannot be flashed with slow CPUs.",NULL
-
-g_szHelpFlashChecksum:	db	"PC BIOSes require a checksum byte at the end of expansion card BIOS ROMs."
-						db	" You might not want to generate checksum byte when flashing some other images than XTIDE Universal BIOS.",NULL
-
-g_szMultichoiceEepromType:
-						db	"2816 (2 kiB)",LF
-						db	"2864 (8 kiB)",LF
-						db	"2864 mod (8 kiB)",LF
-						db	"28256 (32 kiB)",LF
-						db	"28512 (64 kiB)",NULL
-g_szValueFlash2816:		db	"2816",NULL
-g_szValueFlash2864:		db	"2864",NULL
-g_szValueFlash2864Mod:	db	"2864mod",NULL
-g_szValueFlash28256:	db	"28256",NULL
-g_szValueFlash28512:	db	"28512",NULL
-
-g_szMultichoiceSdpCommand:
-						db	"None",LF
-						db	"Enable",LF
-g_szValueFlashDisable:	db	"Disable",NULL
-g_szValueFlashEnable:	db	"Enable",NULL
-g_szValueFlashNone:		db	"None",NULL
-
-g_szMultichoicePageSize:
-						db	"1 byte",LF
-						db	"2 bytes",LF
-						db	"4 bytes",LF
-						db	"8 bytes",LF
-						db	"16 bytes",LF
-						db	"32 bytes",LF
-g_szValueFlash64bytes:	db	"64 bytes",NULL
-g_szValueFlash32bytes:	db	"32 bytes",NULL
-g_szValueFlash16bytes:	db	"16 bytes",NULL
-g_szValueFlash8bytes:	db	"8 bytes",NULL
-g_szValueFlash4bytes:	db	"4 bytes",NULL
-g_szValueFlash2bytes:	db	"2 bytes",NULL
-g_szValueFlash1byte:	db	"1 byte",NULL
-
-g_szSelectionTimeout:	db	DOUBLE_BOTTOM_LEFT_CORNER,DOUBLE_LEFT_HORIZONTAL_TO_SINGLE_VERTICAL,"%ASelection in %2u s",NULL
-g_szDashForZero:		db	"- ",NULL
-g_szValueUnknownError:	db	"Error!",NULL
-
+g_szItemFlashStart:				db	"Start flashing",NULL
+g_szItemFlashEepromType:		db	"EEPROM type",NULL
+g_szItemFlashSDP:				db	"SDP command",NULL
+g_szItemFlashAddr:				db	"EEPROM address",NULL
+g_szItemFlashPageSize:			db	"Page size",NULL
+g_szItemFlashChecksum:			db	"Generate checksum byte",NULL
+
+g_szDlgFlashEepromType:			db	"Select EEPROM type.",NULL
+g_szDlgFlashSDP:				db	"Select Software Data Protection command.",NULL
+g_szDlgFlashAddr:				db	"Enter segment address where EEPROM is located.",NULL
+g_szDlgFlashPageSize:			db	"Select write page size.",NULL
+g_szDlgFlashChecksum:			db	"Generate checksum byte to the end of BIOS image?",NULL
+
+g_szNfoFlashEepromType:			db	"EEPROM type.",NULL
+g_szNfoFlashStart:				db	"Writes BIOS to EEPROM.",NULL
+g_szNfoFlashSDP:				db	"Software Data Protection command.",NULL
+g_szNfoFlashAddr:				db	"Address (segment) where EEPROM is located.",NULL
+g_szNfoFlashPageSize:			db	"Number of bytes to write before delay.",NULL
+g_szNfoFlashChecksum:			db	"Generate checksum byte to the end of BIOS image.",NULL
+
+g_szHelpFlashSDP:				db	"Software Data Protection Command:",LF
+								db	"None    = Do not use Software Data Protection. Meant for EEPROMs that do not support SDP.",LF,LF
+								db	"Enable  = Write protects the EEPROM after flashing."
+								db	" Software Data Protection should always be enabled if EEPROM supports it.",LF,LF
+								db	"Disable = Disables Software Data Protection after flashing.",NULL
+
+g_szHelpFlashPageSize:			db	"Larger page size will improve write performance but not all EEPROMs support large pages or page writing at all."
+								db	" Byte writing mode will be used when page size is set to 1. Byte writing mode is supported by all EEPROMs."
+								db	" Large pages cannot be flashed with slow CPUs.",NULL
+
+g_szHelpFlashChecksum:			db	"PC BIOSes require a checksum byte at the end of expansion card BIOS ROMs."
+								db	" You might not want to generate checksum byte when flashing some other images than XTIDE Universal BIOS.",NULL
+
+g_szMultichoiceEepromType:		db	"2816 (2 kiB)",LF
+								db	"2864 (8 kiB)",LF
+								db	"2864 mod (8 kiB)",LF
+								db	"28256 (32 kiB)",LF
+								db	"28512 (64 kiB)",NULL
+g_szValueFlash2816:				db	"2816",NULL
+g_szValueFlash2864:				db	"2864",NULL
+g_szValueFlash2864Mod:			db	"2864mod",NULL
+g_szValueFlash28256:			db	"28256",NULL
+g_szValueFlash28512:			db	"28512",NULL
+
+g_szMultichoiceSdpCommand:		db	"None",LF
+								db	"Enable",LF
+g_szValueFlashDisable:			db	"Disable",NULL
+g_szValueFlashEnable:			db	"Enable",NULL
+g_szValueFlashNone:				db	"None",NULL
+
+g_szMultichoicePageSize:		db	"1 byte",LF
+								db	"2 bytes",LF
+								db	"4 bytes",LF
+								db	"8 bytes",LF
+								db	"16 bytes",LF
+								db	"32 bytes",LF
+g_szValueFlash64bytes:			db	"64 bytes",NULL
+g_szValueFlash32bytes:			db	"32 bytes",NULL
+g_szValueFlash16bytes:			db	"16 bytes",NULL
+g_szValueFlash8bytes:			db	"8 bytes",NULL
+g_szValueFlash4bytes:			db	"4 bytes",NULL
+g_szValueFlash2bytes:			db	"2 bytes",NULL
+g_szValueFlash1byte:			db	"1 byte",NULL
+
+g_szSelectionTimeout:			db	DOUBLE_BOTTOM_LEFT_CORNER,DOUBLE_LEFT_HORIZONTAL_TO_SINGLE_VERTICAL,"%ASelection in %2u s",NULL
+g_szDashForZero:				db	"- ",NULL
+g_szValueUnknownError:			db	"Error!",NULL
+
