Index: trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/AutoConfigure.asm
===================================================================
--- trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/AutoConfigure.asm	(revision 603)
+++ trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/AutoConfigure.asm	(revision 605)
@@ -41,4 +41,5 @@
 	push	es
 	pop		ds								; ROMVARS now in DS:DI
+	call	ChecksumSystemBios
 	call	ResetIdevarsToDefaultValues
 	call	DetectIdePortsAndDevices
@@ -48,4 +49,90 @@
 	pop		ds
 	pop		es
+.Return:
+	ret
+
+
+;--------------------------------------------------------------------
+; ChecksumSystemBios
+;	Parameters:
+;		DS:DI:	Ptr to ROMVARS
+;	Returns:
+;		Nothing
+;	Corrupts registers:
+;		AX, BX, CX, DX, SI
+;--------------------------------------------------------------------
+ALIGN JUMP_ALIGN
+ChecksumSystemBios:
+	push	ds
+	mov		si, 0F000h
+	mov		ds, si
+	mov		si, 0FFFFh
+	; DS:SI now points to the end of the System BIOS.
+	std
+	mov		cx, 32768	; The smallest known problematic BIOS so far.
+	mov		dx, si		; Initialize the checksum
+	call	CalculateCRC_CCITTfromDSSIwithSizeInCX
+	pop		ds
+	mov		bx, .Checksums
+	cld
+.NextChecksum:
+	mov		ax, [cs:bx]
+	test	ax, ax
+	jz		SHORT AutoConfigure_ForThisSystem.Return
+	inc		bx
+	inc		bx
+	cmp		ax, dx
+	jne		SHORT .NextChecksum
+	or		BYTE [di+ROMVARS.wFlags], FLG_ROMVARS_CLEAR_BDA_HD_COUNT
+	mov		dx, g_szDlgBadBiosFound
+	jmp		Dialogs_DisplayNotificationFromCSDX
+
+ALIGN WORD_ALIGN
+.Checksums:
+	dw		0D192h						; 32 KB Zenith Z-161 (071784)
+	dw		02F69h						; 32 KB Zenith Z-171 (031485)
+	dw		0
+
+
+;--------------------------------------------------------------------
+; CalculateCRC_CCITTfromDSSIwithSizeInCX
+;	Parameters:
+;		DS:SI:	Pointer to string to checksum
+;		CX:		Length of string to checksum
+;		DX:		Checksum (initially 0FFFFh)
+;		DF:		Set/Clear depending on direction wanted
+;	Returns:
+;		DX:		Checksum
+;		DS:SI:	Pointer to byte after the end of checksummed string
+;	Corrupts registers:
+;		AX, BX, CX
+;--------------------------------------------------------------------
+ALIGN JUMP_ALIGN
+CalculateCRC_CCITTfromDSSIwithSizeInCX:
+;	jcxz	.Return
+	xor		bh, bh
+	mov		ah, 0E0h
+.NextByte:
+	lodsb
+	xor		dh, al
+	mov		bl, dh
+	rol		bx, 1
+	rol		bx, 1
+	rol		bx, 1
+	rol		bx, 1
+	xor		dx, bx
+	rol		bx, 1
+	xchg	dh, dl
+	xor		dx, bx
+	ror		bx, 1
+	ror		bx, 1
+	ror		bx, 1
+	ror		bx, 1
+	and		bl, ah
+	xor		dx, bx
+	ror		bx, 1
+	xor		dh, bl
+	loop	.NextByte
+;.Return:
 	ret
 
Index: trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/BootMenuSettingsMenu.asm
===================================================================
--- trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/BootMenuSettingsMenu.asm	(revision 603)
+++ trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/BootMenuSettingsMenu.asm	(revision 605)
@@ -142,5 +142,5 @@
 	at	MENUITEM.szQuickInfo,		dw	g_szNfoClearBdaDriveCount
 	at	MENUITEM.szHelp,			dw	g_szHelpClearBdaDriveCount
-	at	MENUITEM.bFlags,			db	FLG_MENUITEM_FLAGVALUE
+	at	MENUITEM.bFlags,			db	FLG_MENUITEM_VISIBLE | FLG_MENUITEM_FLAGVALUE
 	at	MENUITEM.bType,				db	TYPE_MENUITEM_MULTICHOICE
 	at	MENUITEM.itemValue + ITEM_VALUE.wRomvarsValueOffset,		dw	ROMVARS.wFlags
@@ -148,5 +148,5 @@
 	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_ROMVARS_IGNORE_MOTHERBOARD_DRIVES
+	at	MENUITEM.itemValue + ITEM_VALUE.wValueBitmask,				dw	FLG_ROMVARS_CLEAR_BDA_HD_COUNT
 iend
 
@@ -258,5 +258,4 @@
 	call	.EnableOrDisableColorThemeSelection
 	call	.EnableOrDisableBootMenuSelectionTimeout
-	call	.EnableOrDisableClearBdaDriveCount
 	mov		si, g_MenupageForBootMenuSettingsMenu
 	jmp		Menupage_ChangeToNewMenupageInDSSI
@@ -328,21 +327,4 @@
 	mov		bx, g_MenuitemBootMnuStngsSelectionTimeout
 	test	ax, FLG_ROMVARS_MODULE_BOOT_MENU
-	jmp		SHORT .DisableMenuitemFromCSBXifZFset
-
-
-;--------------------------------------------------------------------
-; .EnableOrDisableClearBdaDriveCount
-;	Parameters:
-;		AX:		ROMVARS.wFlags
-;		SS:BP:	Menu handle
-;	Returns:
-;		Nothing
-;	Corrupts registers:
-;		BX
-;--------------------------------------------------------------------
-ALIGN JUMP_ALIGN
-.EnableOrDisableClearBdaDriveCount:
-	mov		bx, g_MenuitemBootMnuStngsClearBdaDriveCount
-	call	Buffers_IsXTbuildLoaded
 .DisableMenuitemFromCSBXifZFset:
 	jz		SHORT .DisableMenuitemFromCSBX
@@ -448,7 +430,7 @@
 	mov		cx, ATTRIBUTE_CHARS_size
 	mul		cl							; Multiply with the menu choice index
-	mov		si, ColorThemeTable
-	add		si, ax
-	mov		ax, [es:di]					; Fetch the ptr to ColorTheme
+	mov		si, [es:di]					; Fetch the ptr to ColorTheme
+	add		ax, ColorThemeTable
+	xchg	si, ax
 	mov		di, ax
 
Index: trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Strings.asm
===================================================================
--- trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Strings.asm	(revision 603)
+++ trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Strings.asm	(revision 605)
@@ -118,4 +118,8 @@
 g_bControllersDetected:	db	'x'				; Value stored directly here
 						db	" controllers.",NULL
+g_szDlgBadBiosFound:	db	"This computer has been identified as being one of the following models:",LF,LF
+						db	"Zenith Z-171",LF
+						db	"Zenith Z-161",LF,LF
+						db	"The Boot settings menu option 'Remove other hard drives' has been set to YES for this reason.",NULL
 g_szDlgCfgFullMode:		db	"Enable full operating mode?",NULL
 g_szDlgCfgStealSize:	db	"How many kiB of base memory to steal for XTIDE Universal BIOS variables (1...255)?",NULL
@@ -465,6 +469,8 @@
 							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 95 drivers to work when"
-							db	" MODULE_WIN95_CMOS_HACK is not included (dummy drive needs to be defined in system BIOS setup).",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
