Index: trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/BootMenuSettingsMenu.asm
===================================================================
--- trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/BootMenuSettingsMenu.asm	(revision 457)
+++ trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/BootMenuSettingsMenu.asm	(revision 459)
@@ -94,5 +94,5 @@
 	at	MENUITEM.szQuickInfo,		dw	g_szNfoBootDrive
 	at	MENUITEM.szHelp,			dw	g_szHelpBootDrive
-	at	MENUITEM.bFlags,			db	FLG_MENUITEM_VISIBLE | FLG_MENUITEM_BYTEVALUE
+	at	MENUITEM.bFlags,			db	FLG_MENUITEM_BYTEVALUE
 	at	MENUITEM.bType,				db	TYPE_MENUITEM_HEX
 	at	MENUITEM.itemValue + ITEM_VALUE.wRomvarsValueOffset,		dw	ROMVARS.bBootDrv
@@ -163,6 +163,7 @@
 	push	cs
 	pop		ds
-	call	EnableOrDisableBootMenuSettings
-	call	EnableOrDisableSerialSettings
+	call	.EnableOrDisableScanForSerialDrives
+	call	.EnableOrDisableDefaultBootDrive
+	call	.EnableOrDisableBootMenuSelectionTimeout
 	mov		si, g_MenupageForBootMenuSettingsMenu
 	jmp		Menupage_ChangeToNewMenupageInDSSI
@@ -170,5 +171,5 @@
 
 ;--------------------------------------------------------------------
-; EnableOrDisableBootMenuSettings
+; .EnableOrDisableScanForSerialDrives
 ;	Parameters:
 ;		SS:BP:	Menu handle
@@ -179,44 +180,65 @@
 ;--------------------------------------------------------------------
 ALIGN JUMP_ALIGN
-EnableOrDisableBootMenuSettings:
-	mov		bx, ROMVARS.wFlags
-	call	Buffers_GetRomvarsValueToAXfromOffsetInBX
+.EnableOrDisableScanForSerialDrives:
+	call	Buffers_GetRomvarsFlagsToAX
+	mov		bx, g_MenuitemBootMenuSerialScanDetect
+	test	ax, FLG_ROMVARS_MODULE_SERIAL
+	jmp		SHORT .DisableMenuitemFromCSBXifZFset
+
+
+;--------------------------------------------------------------------
+; .EnableOrDisableDefaultBootDrive
+;	Parameters:
+;		SS:BP:	Menu handle
+;	Returns:
+;		Nothing
+;	Corrupts registers:
+;		AX, BX
+;--------------------------------------------------------------------
+ALIGN JUMP_ALIGN
+.EnableOrDisableDefaultBootDrive:
+	call	Buffers_GetRomvarsFlagsToAX
+	mov		bx, g_MenuitemBootMnuStngsDefaultBootDrive
+	test	ax, FLG_ROMVARS_MODULE_HOTKEYS
+	jmp		SHORT .DisableMenuitemFromCSBXifZFset
+
+
+;--------------------------------------------------------------------
+; .EnableOrDisableBootMenuSelectionTimeout
+;	Parameters:
+;		SS:BP:	Menu handle
+;	Returns:
+;		Nothing
+;	Corrupts registers:
+;		AX, BX
+;--------------------------------------------------------------------
+ALIGN JUMP_ALIGN
+.EnableOrDisableBootMenuSelectionTimeout:
+	call	Buffers_GetRomvarsFlagsToAX
+	mov		bx, g_MenuitemBootMnuStngsSelectionTimeout
 	test	ax, FLG_ROMVARS_MODULE_BOOT_MENU
-	mov		al, FLG_MENUITEM_VISIBLE
-	jz		SHORT .DisableBootMenuSettings
-
-	; Enable boot menu related
-	or		[g_MenuitemBootMnuStngsSelectionTimeout+MENUITEM.bFlags], al
+.DisableMenuitemFromCSBXifZFset:
+	jz		SHORT .DisableMenuitemFromCSBX
+	; Fall to .EnableMenuitemFromCSBX
+
+
+;--------------------------------------------------------------------
+; .EnableMenuitemFromCSBX
+; .DisableMenuitemFromCSBX
+;	Parameters:
+;		CS:BX:	Ptr to MENUITEM
+;	Returns:
+;		Nothing
+;	Corrupts registers:
+;		Nothing
+;--------------------------------------------------------------------
+ALIGN JUMP_ALIGN
+.EnableMenuitemFromCSBX:
+	or		BYTE [cs:bx+MENUITEM.bFlags], FLG_MENUITEM_VISIBLE
 	ret
 
-.DisableBootMenuSettings:
-	not		ax
-	and		[g_MenuitemBootMnuStngsSelectionTimeout+MENUITEM.bFlags], al
-	ret
-
-
-;--------------------------------------------------------------------
-; EnableOrDisableSerialSettings
-;	Parameters:
-;		SS:BP:	Menu handle
-;	Returns:
-;		Nothing
-;	Corrupts registers:
-;		AX, BX
-;--------------------------------------------------------------------
-EnableOrDisableSerialSettings:
-	mov		bx, ROMVARS.wFlags
-	call	Buffers_GetRomvarsValueToAXfromOffsetInBX
-	test	ax, FLG_ROMVARS_MODULE_SERIAL
-	mov		al, FLG_MENUITEM_VISIBLE
-	jz		SHORT .DisableSerialSettings
-
-	; Enable serial related
-	or		[g_MenuitemBootMenuSerialScanDetect+MENUITEM.bFlags], al
-	ret
-
-.DisableSerialSettings:
-	not		ax
-	and		[g_MenuitemBootMenuSerialScanDetect+MENUITEM.bFlags], al
+ALIGN JUMP_ALIGN
+.DisableMenuitemFromCSBX:
+	and		BYTE [cs:bx+MENUITEM.bFlags], ~FLG_MENUITEM_VISIBLE
 	ret
 
Index: trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/IdeControllerMenu.asm
===================================================================
--- trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/IdeControllerMenu.asm	(revision 457)
+++ trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/IdeControllerMenu.asm	(revision 459)
@@ -163,5 +163,5 @@
 	at	MENUITEM.szQuickInfo,		dw	g_szNfoIdeEnIRQ
 	at	MENUITEM.szHelp,			dw	g_szHelpIdeEnIRQ
-	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
@@ -332,11 +332,13 @@
 	push	cs
 	pop		ds
-	call	.EnableOrDisableIRQ
+	call	.DisableIRQchannelSelection
+	call	.EnableOrDisableEnableInterrupt
 	call	.EnableOrDisableSerial
 	mov		si, g_MenupageForIdeControllerMenu
 	jmp		Menupage_ChangeToNewMenupageInDSSI
 
-;--------------------------------------------------------------------
-; .EnableOrDisableIRQ
+
+;--------------------------------------------------------------------
+; .EnableOrDisableEnableInterrupt
 ;	Parameters:
 ;		SS:BP:	Menu handle
@@ -347,15 +349,46 @@
 ;--------------------------------------------------------------------
 ALIGN JUMP_ALIGN
-.EnableOrDisableIRQ:
+.EnableOrDisableEnableInterrupt:
+	call	Buffers_GetRomvarsFlagsToAX
+	mov		bx, g_MenuitemIdeControllerEnableInterrupt
+	test	ax, FLG_ROMVARS_MODULE_IRQ
+	jz		SHORT .DisableMenuitemFromCSBX
+
+	mov		bx, [cs:g_MenuitemIdeControllerDevice+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset]
+	call	Buffers_GetRomvarsValueToAXfromOffsetInBX
+	mov		bx, g_MenuitemIdeControllerEnableInterrupt
+	cmp		al, DEVICE_SERIAL_PORT
+	jae		SHORT .DisableMenuitemFromCSBX
+	cmp		al, DEVICE_8BIT_XTCF
+	jbe		SHORT .DisableMenuitemFromCSBX
+
+	call	.EnableMenuitemFromCSBX
+	; Fall to .EnableOrDisableIRQchannelSelection
+
+;--------------------------------------------------------------------
+; .EnableOrDisableIRQchannelSelection
+;	Parameters:
+;		SS:BP:	Menu handle
+;	Returns:
+;		Nothing
+;	Corrupts registers:
+;		AX, BX
+;--------------------------------------------------------------------
+ALIGN JUMP_ALIGN
+.EnableOrDisableIRQchannelSelection:
 	mov		bx, [cs:g_MenuitemIdeControllerEnableInterrupt+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset]
 	call	Buffers_GetRomvarsValueToAXfromOffsetInBX
 	mov		bx, g_MenuitemIdeControllerIdeIRQ
 	test	al, al
+	jnz		SHORT .EnableMenuitemFromCSBX
+.DisableIRQchannelSelection:
+	mov		bx, g_MenuitemIdeControllerIdeIRQ
 	jz		SHORT .DisableMenuitemFromCSBX
-	; Fall to .EnableMenuitemFromCSBX
-
-;--------------------------------------------------------------------
+	; Fall to .DisableMenuitemFromCSBX
+
+
+;--------------------------------------------------------------------
+; .DisableMenuitemFromCSBX
 ; .EnableMenuitemFromCSBX
-; .DisableMenuitemFromCSBX
 ;	Parameters:
 ;		CS:BX:	Ptr to MENUITEM
@@ -365,4 +398,9 @@
 ;		Nothing
 ;--------------------------------------------------------------------
+ALIGN JUMP_ALIGN
+.DisableMenuitemFromCSBX:
+	and		BYTE [cs:bx+MENUITEM.bFlags], ~FLG_MENUITEM_VISIBLE
+	ret
+
 ALIGN JUMP_ALIGN
 .EnableMenuitemFromCSBX:
@@ -370,8 +408,4 @@
 	ret
 
-ALIGN JUMP_ALIGN
-.DisableMenuitemFromCSBX:
-	and		BYTE [cs:bx+MENUITEM.bFlags], ~FLG_MENUITEM_VISIBLE
-	ret
 
 .EnableOrDisableSerial:
@@ -382,7 +416,4 @@
 	call	.DisableMenuitemFromCSBX
 
-	mov		bx, g_MenuitemIdeControllerEnableInterrupt
-	call	.DisableMenuitemFromCSBX
-
 	mov		bx, g_MenuitemIdeControllerSerialBaud
 	call	.DisableMenuitemFromCSBX
@@ -396,5 +427,5 @@
 	mov		bx, [cs:g_MenuitemIdeControllerDevice+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset]
 	call	Buffers_GetRomvarsValueToAXfromOffsetInBX
-	cmp		al,DEVICE_SERIAL_PORT
+	cmp		al, DEVICE_SERIAL_PORT
 	jnz		.DisableAllSerial
 
@@ -418,7 +449,4 @@
 
 	mov		bx, g_MenuitemIdeControllerControlBlockAddress
-	call	.EnableMenuitemFromCSBX
-
-	mov		bx, g_MenuitemIdeControllerEnableInterrupt
 	call	.EnableMenuitemFromCSBX
 
Index: trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Strings.asm
===================================================================
--- trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Strings.asm	(revision 457)
+++ trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Strings.asm	(revision 459)
@@ -380,5 +380,5 @@
 
 g_szNfoBootTimeout:		db	"Menu item selection timeout in BIOS timer ticks. 1 tick = 54.9 ms.",NULL
-g_szNfoBootDrive:		db	"Default drive on boot menu.",NULL
+g_szNfoBootDrive:		db	"Default boot drive.",NULL
 g_szNfoDispMode:		db	"Display mode to set when booting.",NULL
 g_szNfoBootFloppyDrvs:	db	"Number of Floppy Drives in system.",NULL
