Index: trunk/XTIDE_Universal_BIOS/Inc/BootVars.inc
===================================================================
--- trunk/XTIDE_Universal_BIOS/Inc/BootVars.inc	(revision 519)
+++ trunk/XTIDE_Universal_BIOS/Inc/BootVars.inc	(revision 520)
@@ -45,7 +45,9 @@
 %endif
 
-	.clearToZeroFromThisPoint:
+	
 %ifdef MODULE_HOTKEYS
 	.hotkeyVars				resb	HOTKEYVARS_size
+%else
+	.clearToZeroFromThisPoint:
 %endif
 
@@ -53,8 +55,10 @@
 endstruc
 
+
 %ifdef MODULE_HOTKEYS
 
 struc HOTKEYVARS
 	.wTimeToClose		resb	2		; Earliest system time when Hotkey Bar can be closed
+.clearToZeroFromThisPoint:
 	.wFddAndHddLetters:
 	.bFddLetter			resb	1		; Floppy Drive letter hotkey (upper case)
Index: trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH0h_HReset.asm
===================================================================
--- trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH0h_HReset.asm	(revision 519)
+++ trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH0h_HReset.asm	(revision 520)
@@ -122,9 +122,9 @@
 
 	mov		si, ControllerResetForDPTinDSDI
-	call	.CallSIforEveryDrive						; Reset all drives to power on settings
-	mov		si, AH9h_InitializeDriveForUse
-	; Fall to .CallSIforEveryDrive						; Initialize all drives
-
-.CallSIforEveryDrive:									; BH will be garbage on exit if this entry point is used,
+	call	.CallSIforEveryController					; Reset all drives to power on settings
+	mov		si, ControllerInitForMasterOrSingleDPTinDSDI
+	; Fall to .CallSIforEveryController					; Initialize all controllers (Master and Slave drives)
+
+.CallSIforEveryController:								; BH will be garbage on exit if this entry point is used,
 														; but reset of all drives will still happen
 
@@ -166,5 +166,4 @@
 ;	Returns:
 ;		AH:		Int 13h return status
-;		CF:		0 if successful, 1 if error
 ;	Corrupts registers:
 ;		AL, BX, CX, DX
@@ -180,2 +179,28 @@
 	jmp		Device_ResetMasterAndSlaveController
 %endif
+
+
+;--------------------------------------------------------------------
+; ControllerInitForMasterOrSingleDPTinDSDI
+;	Parameters:
+;		DS:DI:	Ptr to DPT for Master or Single Drive (initializes both Master and Slave drive)
+;		SS:BP:	Ptr to IDEPACK
+;	Returns:
+;		AH:		Int 13h return status
+;	Corrupts registers:
+;		AL, BX, CX, DX
+;--------------------------------------------------------------------
+ControllerInitForMasterOrSingleDPTinDSDI:
+	call	AH9h_InitializeDriveForUse			; Init Master or Single drive
+	push	ax									; Store error code
+
+	eMOVZX	ax, BYTE [di+DPT.bIdevarsOffset]	; Clear AH
+	add		di, BYTE LARGEST_DPT_SIZE			; Slave drive or next controller
+	cmp		[di+DPT.bIdevarsOffset], al
+	jne		SHORT .NoSlaveDrivePresent
+
+	call	AH9h_InitializeDriveForUse			; Init Slave drive
+.NoSlaveDrivePresent:
+	pop		bx
+	MAX_U	ah, bh								; Return error code from either drive
+	ret
Index: trunk/XTIDE_Universal_BIOS/Src/Handlers/Int19h.asm
===================================================================
--- trunk/XTIDE_Universal_BIOS/Src/Handlers/Int19h.asm	(revision 519)
+++ trunk/XTIDE_Universal_BIOS/Src/Handlers/Int19h.asm	(revision 520)
@@ -80,5 +80,5 @@
 %ifdef MODULE_HOTKEYS
 	call	TimerTicks_ReadFromBdaToAX
-	add		ax, MIN_TIME_TO_DISPLAY_HOTKEY_BAR
+	add		ax, BYTE MIN_TIME_TO_DISPLAY_HOTKEY_BAR
 	mov		[es:BOOTVARS.hotkeyVars+HOTKEYVARS.wTimeToClose], ax
 %endif
Index: trunk/XTIDE_Universal_BIOS/Src/Initialization/AdvancedAta/AdvAtaInit.asm
===================================================================
--- trunk/XTIDE_Universal_BIOS/Src/Initialization/AdvancedAta/AdvAtaInit.asm	(revision 519)
+++ trunk/XTIDE_Universal_BIOS/Src/Initialization/AdvancedAta/AdvAtaInit.asm	(revision 520)
@@ -101,5 +101,4 @@
 ;		DS:DI:	Ptr to DPT for Single or Slave Drive
 ;	Returns:
-;		DS:DI:	Ptr to DPT for Single or Slave Drive
 ;		SI:		Offset to Master DPT if Slave Drive present
 ;				Zero if Slave Drive not present
Index: trunk/XTIDE_Universal_BIOS/Src/VariablesAndDPTs/BootVars.asm
===================================================================
--- trunk/XTIDE_Universal_BIOS/Src/VariablesAndDPTs/BootVars.asm	(revision 519)
+++ trunk/XTIDE_Universal_BIOS/Src/VariablesAndDPTs/BootVars.asm	(revision 520)
@@ -39,5 +39,9 @@
 	mov		al, DRVDETECTINFO_size
 	mul		BYTE [cs:ROMVARS.bIdeCnt]
-	mov		di, BOOTVARS.clearToZeroFromThisPoint	; We must not initialize anything before this!
+%ifdef MODULE_HOTKEYS ; We must not initialize anything before this!
+	mov		di, BOOTVARS.hotkeyVars + HOTKEYVARS.clearToZeroFromThisPoint	
+%else
+	mov		di, BOOTVARS.clearToZeroFromThisPoint
+%endif
 	add		ax, BOOTVARS_size
 	sub		ax, di
